On Fri 05-10-18 13:04:43, Anshuman Khandual wrote: > Does the following sound close enough to what you are looking for ? I do not think so > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 9df1d59..070c419 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -504,6 +504,13 @@ static inline bool hugepage_migration_supported(struct hstate *h) > return arch_hugetlb_migration_supported(h); > } > > +static inline bool hugepage_movable_required(struct hstate *h) > +{ > + if (hstate_is_gigantic(h)) > + return true; > + return false; > +} > + Apart from naming (hugepage_movable_supported?) the above doesn't do the most essential thing to query whether the hugepage migration is supported at all. Apart from that i would expect the logic to be revers. We do not really support giga pages migration enough to support them in movable zone. > @@ -1652,6 +1655,9 @@ struct page *alloc_huge_page_nodemask(struct hstate *h, int preferred_nid, > { > gfp_t gfp_mask = htlb_alloc_mask(h); > > + if (hugepage_movable_required(h)) > + gfp_mask |= __GFP_MOVABLE; > + And besides that this really want to live in htlb_alloc_mask because this is really an allocation policy. It would be unmap_and_move_huge_page to call hugepage_migration_supported. The later is the one to allow for an arch specific override. Makes sense? -- Michal Hocko SUSE Labs