mm: thp: introduce multi-size THP sysfs interface
[linux-2.6-microblaze.git] / mm / khugepaged.c
index 0646547..d72aecd 100644 (file)
@@ -446,7 +446,8 @@ void khugepaged_enter_vma(struct vm_area_struct *vma,
 {
        if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) &&
            hugepage_flags_enabled()) {
-               if (hugepage_vma_check(vma, vm_flags, false, false, true))
+               if (thp_vma_allowable_order(vma, vm_flags, false, false, true,
+                                           PMD_ORDER))
                        __khugepaged_enter(vma->vm_mm);
        }
 }
@@ -922,16 +923,16 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address,
        if (!vma)
                return SCAN_VMA_NULL;
 
-       if (!transhuge_vma_suitable(vma, address))
+       if (!thp_vma_suitable_order(vma, address, PMD_ORDER))
                return SCAN_ADDRESS_RANGE;
-       if (!hugepage_vma_check(vma, vma->vm_flags, false, false,
-                               cc->is_khugepaged))
+       if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false,
+                                    cc->is_khugepaged, PMD_ORDER))
                return SCAN_VMA_CHECK;
        /*
         * Anon VMA expected, the address may be unmapped then
         * remapped to file after khugepaged reaquired the mmap_lock.
         *
-        * hugepage_vma_check may return true for qualified file
+        * thp_vma_allowable_order may return true for qualified file
         * vmas.
         */
        if (expect_anon && (!(*vmap)->anon_vma || !vma_is_anonymous(*vmap)))
@@ -1503,7 +1504,8 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
         * and map it by a PMD, regardless of sysfs THP settings. As such, let's
         * analogously elide sysfs THP settings here.
         */
-       if (!hugepage_vma_check(vma, vma->vm_flags, false, false, false))
+       if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false, false,
+                                    PMD_ORDER))
                return SCAN_VMA_CHECK;
 
        /* Keep pmd pgtable for uffd-wp; see comment in retract_page_tables() */
@@ -2368,7 +2370,8 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result,
                        progress++;
                        break;
                }
-               if (!hugepage_vma_check(vma, vma->vm_flags, false, false, true)) {
+               if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false,
+                                            true, PMD_ORDER)) {
 skip:
                        progress++;
                        continue;
@@ -2705,7 +2708,8 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,
 
        *prev = vma;
 
-       if (!hugepage_vma_check(vma, vma->vm_flags, false, false, false))
+       if (!thp_vma_allowable_order(vma, vma->vm_flags, false, false, false,
+                                    PMD_ORDER))
                return -EINVAL;
 
        cc = kmalloc(sizeof(*cc), GFP_KERNEL);