On Tue, 14 Dec 2021, Vlastimil Babka wrote:
If doesn't feel right to me to fix (or rather workaround) this on the level of kmalloc caches just because the current reports come from there. If we decide it's acceptable for kdump kernel to return !ZONE_DMA memory for GFP_DMA requests, then it should apply at the page allocator level for all allocations, not just kmalloc().
Also you mention above you'd prefer ZONE_DMA32 memory, while chances are this approach of using KMALLOC_NORMAL caches will end up giving you ZONE_NORMAL. On the page allocator level it would be much easier to implement a fallback from non-populated ZONE_DMA to ZONE_DMA32 specifically.
Well this only works if the restrictions on the physical memory addresses of each platform make that possible.