On Wed 30-05-18 09:02:13, Huaisheng HS1 Ye wrote: > From: owner-linux-mm@xxxxxxxxx [mailto:owner-linux-mm@xxxxxxxxx] On Behalf Of Michal Hocko > Sent: Monday, May 28, 2018 9:38 PM > > > In my opinion, originally there shouldn't be such many wrong > > > combinations of these bottom 3 bits. For any user, whether or > > > driver and fs, they should make a decision that which zone is they > > > preferred. Matthew's idea is great, because with it the user must > > > offer an unambiguous flag to gfp zone bits. > > > > Well, I would argue that those shouldn't really care about any zones at > > all. All they should carea bout is whether they really need a low mem > > zone (aka directly accessible to the kernel), highmem or they are the > > allocation is generally movable. Mixing zones into the picture just > > makes the whole thing more complicated and error prone. > > Dear Michal, > > I don't quite understand that. I think those, mostly drivers, need to > get the correct zone they want. ZONE_DMA32 is an example, if drivers can be > satisfied with a low mem zone, why they mark the gfp flags as > 'GFP_KERNEL|__GFP_DMA32'? > GFP_KERNEL is enough to make sure a directly accessible low mem, but it is > obvious that they want to get a DMA accessible zone below 4G. They want a specific pfn range. Not a _zone_. Zone is an MM abstraction to manage memory. And not a great one as the time has shown. We have moved away from the per-zone reclaim because it just turned out to be problematic. Leaking this abstraction to users was a mistake IMHO. It was surely convenient but we can clearly see it was just confusing and many users just got it wrong. I do agree with Christoph in other email that the proper way for DMA users is to use the existing DMA API which is more towards what they need. Set a restriction on dma-able memory ranges. -- Michal Hocko SUSE Labs