Adding Anshuman On 09/29/2017 01:43 PM, Alexandru Moise wrote: > On Fri, Sep 29, 2017 at 05:13:39PM +0200, Alexandru Moise wrote: >> >> diff --git a/mm/hugetlb.c b/mm/hugetlb.c >> index 424b0ef08a60..ab28de0122af 100644 >> --- a/mm/hugetlb.c >> +++ b/mm/hugetlb.c >> @@ -926,7 +926,7 @@ static struct page *dequeue_huge_page_nodemask(struct hstate *h, gfp_t gfp_mask, >> /* Movability of hugepages depends on migration support. */ >> static inline gfp_t htlb_alloc_mask(struct hstate *h) >> { >> - if (hugepages_treat_as_movable || hugepage_migration_supported(h)) >> + if (hugepages_treat_as_movable && hugepage_migration_supported(h)) >> return GFP_HIGHUSER_MOVABLE; >> else >> return GFP_HIGHUSER; >> -- >> 2.14.2 >> > > I seem to have terribly misunderstood the semantics of this flag wrt hugepages, > please ignore this for now. That is Okay, it made me look at this code more closely. static inline bool hugepage_migration_supported(struct hstate *h) { #ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION if ((huge_page_shift(h) == PMD_SHIFT) || (huge_page_shift(h) == PGDIR_SHIFT)) return true; else return false; #else return false; #endif } So, hugepage_migration_supported() can only return true if ARCH_ENABLE_HUGEPAGE_MIGRATION is defined. Commit c177c81e09e5 restricts hugepage_migration_support to x86_64. So, ARCH_ENABLE_HUGEPAGE_MIGRATION is only defined for x86_64. Commit 94310cbcaa3c added the ability to migrate gigantic hugetlb pages at the PGD level. This added the check for PGD level pages to hugepage_migration_supported(), which is only there if ARCH_ENABLE_HUGEPAGE_MIGRATION is defined. IIUC, this functionality was added for powerpc. Yet, powerpc does not define ARCH_ENABLE_HUGEPAGE_MIGRATION (unless I am missing something). -- Mike Kravetz -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>