arm64-mm-implement-the-architecture-specific-test_and_clear_young_ptes.patch removed from -mm tree
The quilt patch titled
Subject: arm64: mm: implement the architecture-specific test_and_clear_young_ptes()
has been removed from the -mm tree. Its filename was
arm64-mm-implement-the-architecture-specific-test_and_clear_young_ptes.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Baolin Wang <[email protected]>
Subject: arm64: mm: implement the architecture-specific test_and_clear_young_ptes()
Date: Fri, 6 Mar 2026 14:43:42 +0800
Implement the Arm64 architecture-specific test_and_clear_young_ptes() to enable batched checking of young flags, improving performance during large folio reclamation when MGLRU is enabled.
While we're at it, simplify ptep_test_and_clear_young() by calling test_and_clear_young_ptes(). Since callers guarantee that PTEs are present before calling these functions, we can use pte_cont() to check the CONT_PTE flag instead of pte_valid_cont().
Performance testing:
Enable MGLRU, then allocate 10G clean file-backed folios by mmap() in a memory cgroup, and try to reclaim 8G file-backed folios via the memory.reclaim interface. I can observe 60%+ performance improvement on my Arm64 32-core server (and about 15% improvement on my X86 machine).
W/o patchset:
real 0m0.470s
user 0m0.000s
sys 0m0.470s
W/ patchset:
real 0m0.180s
user 0m0.001s
sys 0m0.179s
---
arch/arm64/include/asm/pgtable.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
arch/arm64/include/asm/pgtable.h renamed from arch/arm64/include/asm/pgtable.h~arm64-mm-implement-the-architecture-specific-test_and_clear_young_ptes +12 -6
@@ -1812,16 +1812,22 @@ static inline pte_t ptep_get_and_clear(sreturn __ptep_get_and_clear (mm, addr, ptep); } +#define test_and_clear_young_ptes test_and_clear_young_ptes +static inline int test_and_clear_young_ptes (struct vm_area_struct *vma, +unsigned long addr,pte_t *ptep, +unsigned int nr) +{ +if (likely (nr ==1 && !pte_cont (__ptep_get (ptep)))) +return __ptep_test_and_clear_young (vma, addr, ptep); + +return contpte_test_and_clear_young_ptes (vma, addr, ptep, nr); +} +#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNGstatic inline int ptep_test_and_clear_young (struct vm_area_struct *vma,unsigned long addr,pte_t *ptep) { -pte_t orig_pte =__ptep_get (ptep); - -if (likely (!pte_valid_cont (orig_pte))) -return __ptep_test_and_clear_young (vma, addr, ptep); - -return contpte_test_and_clear_young_ptes (vma, addr, ptep,1 ); +return test_and_clear_young_ptes (vma, addr, ptep,1 ); }#define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
_
Patches currently in -mm which might be from [email protected] are
mm-filemap-fix-nr_pages-calculation-overflow-in-filemap_map_pages.patch mm-vmscan-fix-dirty-folios-throttling-on-cgroup-v1-for-mglru.patch