On 4/16/26 03:24, Gregory Price wrote: > On Wed, Apr 15, 2026 at 12:47:50PM -0700, Frank van der Linden wrote: >> >> This has been a really great discussion. I just wanted to add a few >> points that I think I have mentioned in other forums, but not here. >> >> In essence, this is a discussion about memory properties and the level >> at which they should be dealt with. Right now there are basically 3 >> levels: pageblocks, zones and nodes. While these levels exist for good >> reasons, they also sometimes lead to issues. There's duplication of >> functionality. MIGRATE_CMA and ZONE_MOVABLE both implement the same >> basic property, but at different levels (attempts have been made to >> merge them, but it didn't work out). > > I have made this observation as well. ZONEs in particular are a bit > odd because they're somehow simultaneously too broad and too narrow in > terms of what they control and what they're used for. > > 1GB ZONE_MOVABLE HugeTLBFS Pages is an example weird carve-out, because > the memory is in ZONE_MOVABLE to help make 1GB allocations more > reliable, but 1GB movable pages were removed from the kernel because > they're not easily migrated (and therefore may block hot-unplug). > > (Thankfully they're back now, so VMs can live on this memory :P)
Heh, but longterm-pinning would fail on them (making vfio with VMs angry). Similar to CMA hugetlb. In the latter case, we should have a way to identify "this allocation is actually from the CMA owner, so longterm pinning is perfectly fine". Checking the CMA alloc state would be one approach, but that's rather nasty. I guess there would be ways to make that work. I'd assume that people barely rely on 1GB ZONE_MOVABLE HugeTLBFS Pages (iow, mixing kernel-cmdline ZONE_MOVABLE creation with kernel-cmdline hugetlb reservation). I'll note that there was long long ago a proposal of converting ZONE_MOVABLE to "sticky-movable" page blocks. It wouldn't really solve this problem, though, where the early boot code just does something that's rather stupid. -- Cheers, David
