On Fri, 27 Apr 2018, Michal Hocko wrote: > On Thu 26-04-18 22:35:56, Christoph Hellwig wrote: > > On Thu, Apr 26, 2018 at 09:54:06PM +0000, Luis R. Rodriguez wrote: > > > In practice if you don't have a floppy device on x86, you don't need ZONE_DMA, > > > > I call BS on that, and you actually explain later why it it BS due > > to some drivers using it more explicitly. But even more importantly > > we have plenty driver using it through dma_alloc_* and a small DMA > > mask, and they are in use - we actually had a 4.16 regression due to > > them. > > Well, but do we need a zone for that purpose? The idea was to actually > replace the zone by a CMA pool (at least on x86). With the current > implementation of the CMA we would move the range [0-16M] pfn range into > zone_movable so it can be used and we would get rid of all of the > overhead each zone brings (a bit in page flags, kmalloc caches and who > knows what else) Well it looks like what we are using it for is to force allocation from low physical memory if we fail to obtain proper memory through a normal channel. The use of ZONE_DMA is only there for emergency purposes. I think we could subsitute ZONE_DMA32 on x87 without a problem. Which means that ZONE_DMA has no purpose anymore. Can we make ZONE_DMA on x86 refer to the low 32 bit physical addresses instead and remove ZONE_DMA32? That would actually improve the fallback because you have more memory for the old devices.