On 7/27/21 11:43 AM, Gavin Shan wrote: > This uses struct pgtable_debug_args in the leaf and savewrite test > functions. > > Signed-off-by: Gavin Shan <gshan@xxxxxxxxxx> > --- > mm/debug_vm_pgtable.c | 32 ++++++++++++++++---------------- > 1 file changed, 16 insertions(+), 16 deletions(-) > > diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c > index 8498aa180ebc..0fa98083f7d5 100644 > --- a/mm/debug_vm_pgtable.c > +++ b/mm/debug_vm_pgtable.c > @@ -161,9 +161,9 @@ static void __init pte_advanced_tests(struct mm_struct *mm, > WARN_ON(pte_young(pte)); > } > > -static void __init pte_savedwrite_tests(unsigned long pfn, pgprot_t prot) > +static void __init pte_savedwrite_tests(struct pgtable_debug_args *args) > { > - pte_t pte = pfn_pte(pfn, prot); > + pte_t pte = pfn_pte(args->fixed_pte_pfn, args->page_prot_none); > > if (!IS_ENABLED(CONFIG_NUMA_BALANCING)) > return; > @@ -262,7 +262,7 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, > pgtable = pgtable_trans_huge_withdraw(mm, pmdp); > } > > -static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) > +static void __init pmd_leaf_tests(struct pgtable_debug_args *args) > { > pmd_t pmd; > > @@ -270,7 +270,7 @@ static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) > return; > > pr_debug("Validating PMD leaf\n"); > - pmd = pfn_pmd(pfn, prot); > + pmd = pfn_pmd(args->fixed_pmd_pfn, args->page_prot); > > /* > * PMD based THP is a leaf entry. > @@ -279,7 +279,7 @@ static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) > WARN_ON(!pmd_leaf(pmd)); > } > > -static void __init pmd_savedwrite_tests(unsigned long pfn, pgprot_t prot) > +static void __init pmd_savedwrite_tests(struct pgtable_debug_args *args) > { > pmd_t pmd; > > @@ -290,7 +290,7 @@ static void __init pmd_savedwrite_tests(unsigned long pfn, pgprot_t prot) > return; > > pr_debug("Validating PMD saved write\n"); > - pmd = pfn_pmd(pfn, prot); > + pmd = pfn_pmd(args->fixed_pmd_pfn, args->page_prot_none); > WARN_ON(!pmd_savedwrite(pmd_mk_savedwrite(pmd_clear_savedwrite(pmd)))); > WARN_ON(pmd_savedwrite(pmd_clear_savedwrite(pmd_mk_savedwrite(pmd)))); > } > @@ -388,7 +388,7 @@ static void __init pud_advanced_tests(struct mm_struct *mm, > pudp_huge_get_and_clear(mm, vaddr, pudp); > } > > -static void __init pud_leaf_tests(unsigned long pfn, pgprot_t prot) > +static void __init pud_leaf_tests(struct pgtable_debug_args *args) > { > pud_t pud; > > @@ -396,7 +396,7 @@ static void __init pud_leaf_tests(unsigned long pfn, pgprot_t prot) > return; > > pr_debug("Validating PUD leaf\n"); > - pud = pfn_pud(pfn, prot); > + pud = pfn_pud(args->fixed_pud_pfn, args->page_prot); > /* > * PUD based THP is a leaf entry. > */ > @@ -411,7 +411,7 @@ static void __init pud_advanced_tests(struct mm_struct *mm, > pgprot_t prot) > { > } > -static void __init pud_leaf_tests(unsigned long pfn, pgprot_t prot) { } > +static void __init pud_leaf_tests(struct pgtable_debug_args *args) { } > #endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ > #else /* !CONFIG_TRANSPARENT_HUGEPAGE */ > static void __init pmd_basic_tests(struct pgtable_debug_args *args, int idx) { } > @@ -428,9 +428,9 @@ static void __init pud_advanced_tests(struct mm_struct *mm, > pgprot_t prot) > { > } > -static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) { } > -static void __init pud_leaf_tests(unsigned long pfn, pgprot_t prot) { } > -static void __init pmd_savedwrite_tests(unsigned long pfn, pgprot_t prot) { } > +static void __init pmd_leaf_tests(struct pgtable_debug_args *args) { } > +static void __init pud_leaf_tests(struct pgtable_debug_args *args) { } > +static void __init pmd_savedwrite_tests(struct pgtable_debug_args *args) { } > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > > #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP > @@ -1331,11 +1331,11 @@ static int __init debug_vm_pgtable(void) > p4d_basic_tests(&args); > pgd_basic_tests(&args); > > - pmd_leaf_tests(pmd_aligned, prot); > - pud_leaf_tests(pud_aligned, prot); > + pmd_leaf_tests(&args); > + pud_leaf_tests(&args); > > - pte_savedwrite_tests(pte_aligned, protnone); > - pmd_savedwrite_tests(pmd_aligned, protnone); > + pte_savedwrite_tests(&args); > + pmd_savedwrite_tests(&args); > > pte_special_tests(pte_aligned, prot); > pte_protnone_tests(pte_aligned, protnone); > Reviewed-by: Anshuman Khandual <anshuman.khandual@xxxxxxx>