On Thu, Mar 19, 2026 at 11:24:02AM +0800, Baolin Wang wrote: > Callers use pmdp_test_and_clear_young() to clear the young flag and check > whether it was set for this PMD entry. Change the return type to bool to > make the intention clearer. > > Signed-off-by: Baolin Wang <[email protected]>
Some nits similar to before, otherwise LGTM so: Reviewed-by: Lorenzo Stoakes (Oracle) <[email protected]> > --- > arch/arm64/include/asm/pgtable.h | 6 +++--- > arch/powerpc/include/asm/book3s/64/pgtable.h | 10 +++++----- > arch/powerpc/mm/book3s64/pgtable.c | 4 ++-- > arch/riscv/include/asm/pgtable.h | 2 +- > arch/s390/include/asm/pgtable.h | 4 ++-- > arch/x86/include/asm/pgtable.h | 4 ++-- > arch/x86/mm/pgtable.c | 6 +++--- > include/linux/pgtable.h | 19 +++++++++---------- > 8 files changed, 27 insertions(+), 28 deletions(-) > > diff --git a/arch/arm64/include/asm/pgtable.h > b/arch/arm64/include/asm/pgtable.h > index 393a9d1873f6..7ea16f6ad564 100644 > --- a/arch/arm64/include/asm/pgtable.h > +++ b/arch/arm64/include/asm/pgtable.h > @@ -1321,9 +1321,9 @@ static inline bool __ptep_clear_flush_young(struct > vm_area_struct *vma, > > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || > defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG) > #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, > - pmd_t *pmdp) > +static inline bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long address, > + pmd_t *pmdp) Similar comment as before re: indetation, let's use 2 tabs please, so this would become: static inline bool pmdp_test_and_clear_young(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp) Thanks! Same comment to all other cases here. > { > /* Operation applies to PMD table entry only if FEAT_HAFT is enabled */ > VM_WARN_ON(pmd_table(READ_ONCE(*pmdp)) && !system_supports_haft()); > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h > b/arch/powerpc/include/asm/book3s/64/pgtable.h > index 25e3a86943e2..0f34011665a6 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h > @@ -1161,13 +1161,13 @@ pud_hugepage_update(struct mm_struct *mm, unsigned > long addr, pud_t *pudp, > * For radix we should always find H_PAGE_HASHPTE zero. Hence > * the below will work for radix too > */ > -static inline int __pmdp_test_and_clear_young(struct mm_struct *mm, > - unsigned long addr, pmd_t *pmdp) > +static inline bool __pmdp_test_and_clear_young(struct mm_struct *mm, > + unsigned long addr, pmd_t *pmdp) > { > unsigned long old; > > if ((pmd_raw(*pmdp) & cpu_to_be64(_PAGE_ACCESSED | H_PAGE_HASHPTE)) == > 0) > - return 0; > + return false; > old = pmd_hugepage_update(mm, addr, pmdp, _PAGE_ACCESSED, 0); > return ((old & _PAGE_ACCESSED) != 0); > } > @@ -1300,8 +1300,8 @@ extern int pudp_set_access_flags(struct vm_area_struct > *vma, > pud_t entry, int dirty); > > #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG > -extern int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, pmd_t *pmdp); > +extern bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp); Remove the extern please! > #define __HAVE_ARCH_PUDP_TEST_AND_CLEAR_YOUNG > extern int pudp_test_and_clear_young(struct vm_area_struct *vma, > unsigned long address, pud_t *pudp); > diff --git a/arch/powerpc/mm/book3s64/pgtable.c > b/arch/powerpc/mm/book3s64/pgtable.c > index 4b09c04654a8..aed39bba891e 100644 > --- a/arch/powerpc/mm/book3s64/pgtable.c > +++ b/arch/powerpc/mm/book3s64/pgtable.c > @@ -98,8 +98,8 @@ int pudp_set_access_flags(struct vm_area_struct *vma, > unsigned long address, > } > > > -int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, pmd_t *pmdp) > +bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp) > { > return __pmdp_test_and_clear_young(vma->vm_mm, address, pmdp); > } > diff --git a/arch/riscv/include/asm/pgtable.h > b/arch/riscv/include/asm/pgtable.h > index 11f57ccf6dc9..bac559d29036 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -1015,7 +1015,7 @@ static inline int pmdp_set_access_flags(struct > vm_area_struct *vma, > } > > #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > +static inline bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > unsigned long address, pmd_t *pmdp) > { > return ptep_test_and_clear_young(vma, address, (pte_t *)pmdp); > diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h > index c9ab81caaf75..1f5efb7be71d 100644 > --- a/arch/s390/include/asm/pgtable.h > +++ b/arch/s390/include/asm/pgtable.h > @@ -1683,8 +1683,8 @@ static inline int pmdp_set_access_flags(struct > vm_area_struct *vma, > } > > #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long addr, pmd_t *pmdp) > +static inline bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long addr, pmd_t *pmdp) > { > pmd_t pmd = *pmdp; > > diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h > index 554dea93eb99..bd02ee730a23 100644 > --- a/arch/x86/include/asm/pgtable.h > +++ b/arch/x86/include/asm/pgtable.h > @@ -1295,8 +1295,8 @@ extern int pudp_set_access_flags(struct vm_area_struct > *vma, > pud_t entry, int dirty); > > #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG > -extern int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long addr, pmd_t *pmdp); > +extern bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long addr, pmd_t *pmdp); Remove the extern please! > extern int pudp_test_and_clear_young(struct vm_area_struct *vma, > unsigned long addr, pud_t *pudp); > > diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c > index 0007dc3d739e..10a5e0b2be36 100644 > --- a/arch/x86/mm/pgtable.c > +++ b/arch/x86/mm/pgtable.c > @@ -456,10 +456,10 @@ bool ptep_test_and_clear_young(struct vm_area_struct > *vma, > } > > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || > defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG) > -int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long addr, pmd_t *pmdp) > +bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long addr, pmd_t *pmdp) > { > - int ret = 0; > + bool ret = false; > > if (pmd_young(*pmdp)) > ret = test_and_clear_bit(_PAGE_BIT_ACCESSED, > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index 1198e216fde3..e53220b0a9a3 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -507,25 +507,24 @@ static inline bool ptep_test_and_clear_young(struct > vm_area_struct *vma, > > #ifndef __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG > #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || > defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG) > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, > - pmd_t *pmdp) > +static inline bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp) > { > pmd_t pmd = *pmdp; > - int r = 1; > + bool young = true; > + > if (!pmd_young(pmd)) > - r = 0; > + young = false; > else > set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd)); > - return r; > + return young; > } > #else > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, > - pmd_t *pmdp) > +static inline bool pmdp_test_and_clear_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp) > { > BUILD_BUG(); > - return 0; > + return false; > } > #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG */ > #endif > -- > 2.47.3 >
