Message ID | 20200827080438.315345-9-aneesh.kumar@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mm/debug_vm_pgtable fixes | expand |
On 08/27/2020 01:34 PM, Aneesh Kumar K.V wrote: > Architectures like ppc64 use deposited page table while updating the huge pte > entries. > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> > --- > mm/debug_vm_pgtable.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c > index f9f6358899a8..0ce5c6a24c5b 100644 > --- a/mm/debug_vm_pgtable.c > +++ b/mm/debug_vm_pgtable.c > @@ -154,7 +154,7 @@ static void __init pmd_basic_tests(unsigned long pfn, pgprot_t prot) > static void __init pmd_advanced_tests(struct mm_struct *mm, > struct vm_area_struct *vma, pmd_t *pmdp, > unsigned long pfn, unsigned long vaddr, > - pgprot_t prot) > + pgprot_t prot, pgtable_t pgtable) > { > pmd_t pmd; > > @@ -165,6 +165,8 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, > /* Align the address wrt HPAGE_PMD_SIZE */ > vaddr = (vaddr & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE; > > + pgtable_trans_huge_deposit(mm, pmdp, pgtable); > + > pmd = pmd_mkhuge(pfn_pmd(pfn, prot)); > set_pmd_at(mm, vaddr, pmdp, pmd); > pmdp_set_wrprotect(mm, vaddr, pmdp); > @@ -193,6 +195,8 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, > pmdp_test_and_clear_young(vma, vaddr, pmdp); > pmd = READ_ONCE(*pmdp); > WARN_ON(pmd_young(pmd)); > + > + pgtable = pgtable_trans_huge_withdraw(mm, pmdp); Should the call sites here be wrapped with __HAVE_ARCH_PGTABLE_DEPOSIT and __HAVE_ARCH_PGTABLE_WITHDRAW respectively. Though there are generic fallback definitions, wondering whether they are indeed essential for all platforms. > } > > static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) > @@ -373,7 +377,7 @@ static void __init pud_basic_tests(unsigned long pfn, pgprot_t prot) { } > static void __init pmd_advanced_tests(struct mm_struct *mm, > struct vm_area_struct *vma, pmd_t *pmdp, > unsigned long pfn, unsigned long vaddr, > - pgprot_t prot) > + pgprot_t prot, pgtable_t pgtable) > { > } > static void __init pud_advanced_tests(struct mm_struct *mm, > @@ -1015,7 +1019,7 @@ static int __init debug_vm_pgtable(void) > 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); > + pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot, saved_ptep); > pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot); > hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot); > > There is a checkpatch.pl warning here. WARNING: Possible unwrapped commit description (prefer a maximum 75 chars per line) #7: Architectures like ppc64 use deposited page table while updating the huge pte total: 0 errors, 1 warnings, 40 lines checked
On 9/1/20 8:52 AM, Anshuman Khandual wrote: > > > On 08/27/2020 01:34 PM, Aneesh Kumar K.V wrote: >> Architectures like ppc64 use deposited page table while updating the huge pte >> entries. >> >> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> >> --- >> mm/debug_vm_pgtable.c | 10 +++++++--- >> 1 file changed, 7 insertions(+), 3 deletions(-) >> >> diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c >> index f9f6358899a8..0ce5c6a24c5b 100644 >> --- a/mm/debug_vm_pgtable.c >> +++ b/mm/debug_vm_pgtable.c >> @@ -154,7 +154,7 @@ static void __init pmd_basic_tests(unsigned long pfn, pgprot_t prot) >> static void __init pmd_advanced_tests(struct mm_struct *mm, >> struct vm_area_struct *vma, pmd_t *pmdp, >> unsigned long pfn, unsigned long vaddr, >> - pgprot_t prot) >> + pgprot_t prot, pgtable_t pgtable) >> { >> pmd_t pmd; >> >> @@ -165,6 +165,8 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, >> /* Align the address wrt HPAGE_PMD_SIZE */ >> vaddr = (vaddr & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE; >> >> + pgtable_trans_huge_deposit(mm, pmdp, pgtable); >> + >> pmd = pmd_mkhuge(pfn_pmd(pfn, prot)); >> set_pmd_at(mm, vaddr, pmdp, pmd); >> pmdp_set_wrprotect(mm, vaddr, pmdp); >> @@ -193,6 +195,8 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, >> pmdp_test_and_clear_young(vma, vaddr, pmdp); >> pmd = READ_ONCE(*pmdp); >> WARN_ON(pmd_young(pmd)); >> + >> + pgtable = pgtable_trans_huge_withdraw(mm, pmdp); > > Should the call sites here be wrapped with __HAVE_ARCH_PGTABLE_DEPOSIT and > __HAVE_ARCH_PGTABLE_WITHDRAW respectively. Though there are generic fallback > definitions, wondering whether they are indeed essential for all platforms. > No, because Any page table helpers operating on pmd level THP can expect a deposited page table. __HAVE_ARCH_PGTABLE_DEPOSIT indicates that fallback to generic version. >> } >> >> static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) >> @@ -373,7 +377,7 @@ static void __init pud_basic_tests(unsigned long pfn, pgprot_t prot) { } >> static void __init pmd_advanced_tests(struct mm_struct *mm, >> struct vm_area_struct *vma, pmd_t *pmdp, >> unsigned long pfn, unsigned long vaddr, >> - pgprot_t prot) >> + pgprot_t prot, pgtable_t pgtable) >> { >> } >> static void __init pud_advanced_tests(struct mm_struct *mm, >> @@ -1015,7 +1019,7 @@ static int __init debug_vm_pgtable(void) >> 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); >> + pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot, saved_ptep); >> pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot); >> hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot); >> >> > > There is a checkpatch.pl warning here. > > WARNING: Possible unwrapped commit description (prefer a maximum 75 chars per line) > #7: > Architectures like ppc64 use deposited page table while updating the huge pte > > total: 0 errors, 1 warnings, 40 lines checked > I will ignore all these, because they are not really important IMHO. -aneesh
Le 01/09/2020 à 08:25, Aneesh Kumar K.V a écrit : > On 9/1/20 8:52 AM, Anshuman Khandual wrote: >> >> >> >> There is a checkpatch.pl warning here. >> >> WARNING: Possible unwrapped commit description (prefer a maximum 75 >> chars per line) >> #7: >> Architectures like ppc64 use deposited page table while updating the >> huge pte >> >> total: 0 errors, 1 warnings, 40 lines checked >> > > I will ignore all these, because they are not really important IMHO. > When doing a git log in a 80 chars terminal window, having wrapping lines is not really convenient. It should be easy to avoid it. Christophe
On 9/1/20 12:20 PM, Christophe Leroy wrote: > > > Le 01/09/2020 à 08:25, Aneesh Kumar K.V a écrit : >> On 9/1/20 8:52 AM, Anshuman Khandual wrote: >>> >>> >>> >>> There is a checkpatch.pl warning here. >>> >>> WARNING: Possible unwrapped commit description (prefer a maximum 75 >>> chars per line) >>> #7: >>> Architectures like ppc64 use deposited page table while updating the >>> huge pte >>> >>> total: 0 errors, 1 warnings, 40 lines checked >>> >> >> I will ignore all these, because they are not really important IMHO. >> > > When doing a git log in a 80 chars terminal window, having wrapping > lines is not really convenient. It should be easy to avoid it. > We have been ignoring that for a long time isn't it? For example ppc64 checkpatch already had --max-line-length=90 There was also recent discussion whether 80 character limit is valid any more. But I do keep it restricted to 80 character where ever it is easy/make sense. -aneesh
Le 01/09/2020 à 09:40, Aneesh Kumar K.V a écrit : > On 9/1/20 12:20 PM, Christophe Leroy wrote: >> >> >> Le 01/09/2020 à 08:25, Aneesh Kumar K.V a écrit : >>> On 9/1/20 8:52 AM, Anshuman Khandual wrote: >>>> >>>> >>>> >>>> There is a checkpatch.pl warning here. >>>> >>>> WARNING: Possible unwrapped commit description (prefer a maximum 75 >>>> chars per line) >>>> #7: >>>> Architectures like ppc64 use deposited page table while updating the >>>> huge pte >>>> >>>> total: 0 errors, 1 warnings, 40 lines checked >>>> >>> >>> I will ignore all these, because they are not really important IMHO. >>> >> >> When doing a git log in a 80 chars terminal window, having wrapping >> lines is not really convenient. It should be easy to avoid it. >> > > We have been ignoring that for a long time isn't it? > > For example ppc64 checkpatch already had > --max-line-length=90 > > > There was also recent discussion whether 80 character limit is valid any > more. But I do keep it restricted to 80 character where ever it is > easy/make sense. > Here we are not talking about the code, but the commit log. As far as I know, the discussions about 80 character lines, 90 lines in powerpc etc ... is for the code. We still aim at keeping lines not longer than 75 chars in the commit log. Christophe Christophe
On 09/01/2020 01:21 PM, Christophe Leroy wrote: > > > Le 01/09/2020 à 09:40, Aneesh Kumar K.V a écrit : >> On 9/1/20 12:20 PM, Christophe Leroy wrote: >>> >>> >>> Le 01/09/2020 à 08:25, Aneesh Kumar K.V a écrit : >>>> On 9/1/20 8:52 AM, Anshuman Khandual wrote: >>>>> >>>>> >>>>> >>>>> There is a checkpatch.pl warning here. >>>>> >>>>> WARNING: Possible unwrapped commit description (prefer a maximum 75 chars per line) >>>>> #7: >>>>> Architectures like ppc64 use deposited page table while updating the huge pte >>>>> >>>>> total: 0 errors, 1 warnings, 40 lines checked >>>>> >>>> >>>> I will ignore all these, because they are not really important IMHO. >>>> >>> >>> When doing a git log in a 80 chars terminal window, having wrapping lines is not really convenient. It should be easy to avoid it. >>> >> >> We have been ignoring that for a long time isn't it? >> >> For example ppc64 checkpatch already had >> --max-line-length=90 >> >> >> There was also recent discussion whether 80 character limit is valid any more. But I do keep it restricted to 80 character where ever it is easy/make sense. >> > > Here we are not talking about the code, but the commit log. > > As far as I know, the discussions about 80 character lines, 90 lines in powerpc etc ... is for the code. > > We still aim at keeping lines not longer than 75 chars in the commit log. Agreed.
diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index f9f6358899a8..0ce5c6a24c5b 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -154,7 +154,7 @@ static void __init pmd_basic_tests(unsigned long pfn, pgprot_t prot) static void __init pmd_advanced_tests(struct mm_struct *mm, struct vm_area_struct *vma, pmd_t *pmdp, unsigned long pfn, unsigned long vaddr, - pgprot_t prot) + pgprot_t prot, pgtable_t pgtable) { pmd_t pmd; @@ -165,6 +165,8 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, /* Align the address wrt HPAGE_PMD_SIZE */ vaddr = (vaddr & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE; + pgtable_trans_huge_deposit(mm, pmdp, pgtable); + pmd = pmd_mkhuge(pfn_pmd(pfn, prot)); set_pmd_at(mm, vaddr, pmdp, pmd); pmdp_set_wrprotect(mm, vaddr, pmdp); @@ -193,6 +195,8 @@ static void __init pmd_advanced_tests(struct mm_struct *mm, pmdp_test_and_clear_young(vma, vaddr, pmdp); pmd = READ_ONCE(*pmdp); WARN_ON(pmd_young(pmd)); + + pgtable = pgtable_trans_huge_withdraw(mm, pmdp); } static void __init pmd_leaf_tests(unsigned long pfn, pgprot_t prot) @@ -373,7 +377,7 @@ static void __init pud_basic_tests(unsigned long pfn, pgprot_t prot) { } static void __init pmd_advanced_tests(struct mm_struct *mm, struct vm_area_struct *vma, pmd_t *pmdp, unsigned long pfn, unsigned long vaddr, - pgprot_t prot) + pgprot_t prot, pgtable_t pgtable) { } static void __init pud_advanced_tests(struct mm_struct *mm, @@ -1015,7 +1019,7 @@ static int __init debug_vm_pgtable(void) 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); + pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, prot, saved_ptep); pud_advanced_tests(mm, vma, pudp, pud_aligned, vaddr, prot); hugetlb_advanced_tests(mm, vma, ptep, pte_aligned, vaddr, prot);
Architectures like ppc64 use deposited page table while updating the huge pte entries. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> --- mm/debug_vm_pgtable.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)