, Alok Kataria wrote: Hi Alok,
Hi, Looking at the current code swiotlb is initialized for 64bit kernels only when the max_pfn value is greater than 4G (MAX_DMA32_PFN value). So in cases when the initial memory is less than 4GB the kernel boots without enabling swiotlb, when we hotadd memory to such a kernel and go beyond the 4G limit, swiotlb is still disabled. As a result when any 32bit devices start using this newly added memory beyond 4G, the kernel starts spitting error messages like below or in some cases it causes kernel panics.
Yes seems like a real problem.
1. Enable swiotlb for all 64bit kernels which have memory hot-add support.
I don't think that's a good idea. It would enable it everywhere on distributions which compile with hotadd. Need (2)
2. Instead of checking the max_pfn value in pci_swiotlb_detect, check for max_hotpluggable_pfn (or some such) value. Though I don't see such a value readily available. I could parse the SRAT and get hotplug memory information but that will make swiotlb detection logic a little too complex. A quick look around srat_xx.c files and the acpi_memhotplug module didn't find any useful API that could be used directly either. So was wondering if any of you are aware of an easy way to get such information ?
I have a patchkit to revamp the SRAT parsing to store the hotadd information more efficiently (the current way is pretty dumb) I need to repost that. With that it would be relatively easy to do I think. -Andi -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html