]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
mm/debug_vm_pgtable/savedwrite: enable savedwrite test with CONFIG_NUMA_BALANCING
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Fri, 16 Oct 2020 03:04:40 +0000 (20:04 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 16 Oct 2020 18:11:14 +0000 (11:11 -0700)
Saved write support was added to track the write bit of a pte after
marking the pte protnone.  This was done so that AUTONUMA can convert a
write pte to protnone and still track the old write bit.  When converting
it back we set the pte write bit correctly thereby avoiding a write fault
again.  Hence enable the test only when CONFIG_NUMA_BALANCING is enabled
and use protnone protflags.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: 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-6-aneesh.kumar@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/debug_vm_pgtable.c

index 4c73e63b4ceb1aa5e04c782b05c93e344265c744..8704901f6bd8af01deac57e109422163df4e6606 100644 (file)
@@ -119,10 +119,14 @@ static void __init pte_savedwrite_tests(unsigned long pfn, pgprot_t prot)
 {
        pte_t pte = pfn_pte(pfn, prot);
 
+       if (!IS_ENABLED(CONFIG_NUMA_BALANCING))
+               return;
+
        pr_debug("Validating PTE saved write\n");
        WARN_ON(!pte_savedwrite(pte_mk_savedwrite(pte_clear_savedwrite(pte))));
        WARN_ON(pte_savedwrite(pte_clear_savedwrite(pte_mk_savedwrite(pte))));
 }
+
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 static void __init pmd_basic_tests(unsigned long pfn, pgprot_t prot)
 {
@@ -234,6 +238,9 @@ static void __init pmd_savedwrite_tests(unsigned long pfn, pgprot_t prot)
 {
        pmd_t pmd = pfn_pmd(pfn, prot);
 
+       if (!IS_ENABLED(CONFIG_NUMA_BALANCING))
+               return;
+
        pr_debug("Validating PMD saved write\n");
        WARN_ON(!pmd_savedwrite(pmd_mk_savedwrite(pmd_clear_savedwrite(pmd))));
        WARN_ON(pmd_savedwrite(pmd_clear_savedwrite(pmd_mk_savedwrite(pmd))));
@@ -1019,8 +1026,8 @@ static int __init debug_vm_pgtable(void)
        pmd_huge_tests(pmdp, pmd_aligned, prot);
        pud_huge_tests(pudp, pud_aligned, prot);
 
-       pte_savedwrite_tests(pte_aligned, prot);
-       pmd_savedwrite_tests(pmd_aligned, prot);
+       pte_savedwrite_tests(pte_aligned, protnone);
+       pmd_savedwrite_tests(pmd_aligned, protnone);
 
        pte_unmap_unlock(ptep, ptl);