On 1/23/20 5:29 AM, Li Xinhai wrote: > vma_migratable() is called to check if pages in vma can be migrated > before go ahead to further actions. Currently it is used in below code > path: > - task_numa_work > - mbind > - move_pages > > For hugetlb mapping, whether vma is migratable or not is determined by: > - CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION > - arch_hugetlb_migration_supported > > Issue: current code only checks for CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION > alone, and no code should use it directly. (note that current code in > vma_migratable don't cause failure or bug because > unmap_and_move_huge_page() will catch unsupported hugepage and handle it > properly) > > This patch checks the two factors by hugepage_migration_supported for > impoving code logic and robustness. It will enable early bail out of > hugepage migration procedure, but because currently all architecture > supporting hugepage migration is able to support all page size, we would > not see performance gain with this patch applied. > > vma_migratable() is moved to mm/mempolicy.c, because of the circular > reference of mempolicy.h and hugetlb.h cause defining it as inline not > feasible. > > Signed-off-by: Li Xinhai <lixinhai.lxh@xxxxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxx> > Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > Cc: Anshuman Khandual <anshuman.khandual@xxxxxxx> > Cc: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> Thanks for continuing to refine this! The commit message looks much better. Un-inlining vma_migratable() should not be an issue as no hot paths make use of the routine. Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz