On Wed, Feb 13, 2019 at 01:33:39PM +0100, Michal Hocko wrote: > Why isn't our check in has_unmovable_pages sufficient?
Taking a closer look, it should be enough. I was mainly confused by the fact that if the zone is ZONE_MOVABLE, we do not keep checking in has_unmovable_pages(): if (zone_idx(zone) == ZONE_MOVABLE) continue; But I overlooked that htlb_alloc_mask() checks whether the allocation cand end up in a movable zone. hugepage_movable_supported() checks that and if the hstate does not support migration at all, we skip __GFP_MOVABLE. So I think that the check in has_unmovable_pages() should be more than enough, so we could strip the checks from do_migrate_ranges() and scan_movable_pages() regarding hugepage migratability. I will run some tests just to make sure this holds and then I will send a patch. Thanks -- Oscar Salvador SUSE L3