mm/debug_vm_pgtable/locks: move non page table modifying test together
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Fri, 16 Oct 2020 03:04:49 +0000 (20:04 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 16 Oct 2020 18:11:14 +0000 (11:11 -0700)
This will help in adding proper locks in a later patch

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lkml.kernel.org/r/20200902114222.181353-9-aneesh.kumar@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/debug_vm_pgtable.c

index 2ba5ec8..3ed3fb6 100644 (file)
@@ -984,7 +984,7 @@ static int __init debug_vm_pgtable(void)
        p4dp = p4d_alloc(mm, pgdp, vaddr);
        pudp = pud_alloc(mm, p4dp, vaddr);
        pmdp = pmd_alloc(mm, pudp, vaddr);
-       ptep = pte_alloc_map_lock(mm, pmdp, vaddr, &ptl);
+       ptep = pte_alloc_map(mm, pmdp, vaddr);
 
        /*
         * Save all the page table page addresses as the page table
@@ -1004,33 +1004,12 @@ static int __init debug_vm_pgtable(void)
        p4d_basic_tests(p4d_aligned, prot);
        pgd_basic_tests(pgd_aligned, prot);
 
-       pte_clear_tests(mm, ptep, vaddr);
-       pmd_clear_tests(mm, pmdp);
-       pud_clear_tests(mm, pudp);
-       p4d_clear_tests(mm, p4dp);
-       pgd_clear_tests(mm, pgdp);
-
-       pte_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
-       pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot);
-       pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot);
-       hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
-
        pmd_leaf_tests(pmd_aligned, prot);
        pud_leaf_tests(pud_aligned, prot);
 
-       pmd_huge_tests(pmdp, pmd_aligned, prot);
-       pud_huge_tests(pudp, pud_aligned, prot);
-
        pte_savedwrite_tests(pte_aligned, protnone);
        pmd_savedwrite_tests(pmd_aligned, protnone);
 
-       pte_unmap_unlock(ptep, ptl);
-
-       pmd_populate_tests(mm, pmdp, saved_ptep);
-       pud_populate_tests(mm, pudp, saved_pmdp);
-       p4d_populate_tests(mm, p4dp, saved_pudp);
-       pgd_populate_tests(mm, pgdp, saved_p4dp);
-
        pte_special_tests(pte_aligned, prot);
        pte_protnone_tests(pte_aligned, protnone);
        pmd_protnone_tests(pmd_aligned, protnone);
@@ -1048,11 +1027,37 @@ static int __init debug_vm_pgtable(void)
        pmd_swap_tests(pmd_aligned, prot);
 
        swap_migration_tests();
-       hugetlb_basic_tests(pte_aligned, prot);
 
        pmd_thp_tests(pmd_aligned, prot);
        pud_thp_tests(pud_aligned, prot);
 
+       hugetlb_basic_tests(pte_aligned, prot);
+
+       pte_clear_tests(mm, ptep, vaddr);
+       pmd_clear_tests(mm, pmdp);
+       pud_clear_tests(mm, pudp);
+       p4d_clear_tests(mm, p4dp);
+       pgd_clear_tests(mm, pgdp);
+
+       ptl = pte_lockptr(mm, pmdp);
+       spin_lock(ptl);
+
+       pte_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
+       pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot);
+       pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot);
+       hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
+
+
+       pmd_huge_tests(pmdp, pmd_aligned, prot);
+       pud_huge_tests(pudp, pud_aligned, prot);
+
+       pte_unmap_unlock(ptep, ptl);
+
+       pmd_populate_tests(mm, pmdp, saved_ptep);
+       pud_populate_tests(mm, pudp, saved_pmdp);
+       p4d_populate_tests(mm, p4dp, saved_pudp);
+       pgd_populate_tests(mm, pgdp, saved_p4dp);
+
        p4d_free(mm, saved_p4dp);
        pud_free(mm, saved_pudp);
        pmd_free(mm, saved_pmdp);