From: Chris Mason <clm@meta.com>
To: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: <akpm@linux-foundation.org>, <david@kernel.org>,
<catalin.marinas@arm.com>, <will@kernel.org>,
<lorenzo.stoakes@oracle.com>, <ryan.roberts@arm.com>,
<Liam.Howlett@oracle.com>, <vbabka@suse.cz>, <rppt@kernel.org>,
<surenb@google.com>, <mhocko@suse.com>, <riel@surriel.com>,
<harry.yoo@oracle.com>, <jannh@google.com>, <willy@infradead.org>,
<baohua@kernel.org>, <dev.jain@arm.com>, <linux-mm@kvack.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v5 4/5] arm64: mm: implement the architecture-specific clear_flush_young_ptes()
Date: Wed, 28 Jan 2026 03:47:43 -0800 [thread overview]
Message-ID: <20260128114936.72280-1-clm@meta.com> (raw)
In-Reply-To: <9d866a2644051e13a41ef4d6ca3909c6e1f9e229.1766631066.git.baolin.wang@linux.alibaba.com>
Baolin Wang <baolin.wang@linux.alibaba.com> wrote:
> Implement the Arm64 architecture-specific clear_flush_young_ptes() to enable
> batched checking of young flags and TLB flushing, improving performance during
> large folio reclamation.
>
> Performance testing:
> 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
> 33% performance improvement on my Arm64 32-core server (and 10%+ improvement
> on my X86 machine). Meanwhile, the hotspot folio_check_references() dropped
> from approximately 35% to around 5%.
Hi everyone, I ran mm-new through my AI review prompts and this one was
flagged. AI review below:
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -1838,6 +1838,17 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
> return contpte_clear_flush_young_ptes(vma, addr, ptep, 1);
> }
>
> +#define clear_flush_young_ptes clear_flush_young_ptes
> +static inline int clear_flush_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_clear_flush_young(vma, addr, ptep);
Should this be checking !pte_valid_cont() instead of !pte_cont()?
The existing ptep_clear_flush_young() above uses !pte_valid_cont() to
determine when to take the fast path. The new function only checks
!pte_cont(), which differs when handling non-present PTEs.
Non-present PTEs (device-private, device-exclusive) can reach
clear_flush_young_ptes() through folio_referenced_one()->
clear_flush_young_ptes_notify(). These entries may have bit 52 set as
part of their encoding, but they aren't valid contiguous mappings.
With the current check, wouldn't such entries incorrectly trigger the
contpte path and potentially cause contpte_clear_flush_young_ptes() to
process additional unrelated PTEs beyond the intended single entry?
> +
> + return contpte_clear_flush_young_ptes(vma, addr, ptep, nr);
> +}
> +
> #define wrprotect_ptes wrprotect_ptes
> static __always_inline void wrprotect_ptes(struct mm_struct *mm,
> unsigned long addr, pte_t *ptep, unsigned int nr)
next prev parent reply other threads:[~2026-01-28 11:50 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-26 6:07 [PATCH v5 0/5] support batch checking of references and unmapping for large folios Baolin Wang
2025-12-26 6:07 ` [PATCH v5 1/5] mm: rmap: support batched checks of the references " Baolin Wang
2026-01-07 6:01 ` Harry Yoo
2026-02-09 8:49 ` David Hildenbrand (Arm)
2026-02-09 9:14 ` Baolin Wang
2026-02-09 9:20 ` David Hildenbrand (Arm)
2026-02-09 9:25 ` Baolin Wang
2025-12-26 6:07 ` [PATCH v5 2/5] arm64: mm: factor out the address and ptep alignment into a new helper Baolin Wang
2026-02-09 8:50 ` David Hildenbrand (Arm)
2025-12-26 6:07 ` [PATCH v5 3/5] arm64: mm: support batch clearing of the young flag for large folios Baolin Wang
2026-01-02 12:21 ` Ryan Roberts
2026-02-09 9:02 ` David Hildenbrand (Arm)
2025-12-26 6:07 ` [PATCH v5 4/5] arm64: mm: implement the architecture-specific clear_flush_young_ptes() Baolin Wang
2026-01-28 11:47 ` Chris Mason [this message]
2026-01-29 1:42 ` Baolin Wang
2026-02-09 9:09 ` David Hildenbrand (Arm)
2026-02-09 9:36 ` Baolin Wang
2026-02-09 9:55 ` David Hildenbrand (Arm)
2026-02-09 10:13 ` Baolin Wang
2026-02-16 0:24 ` Alistair Popple
2025-12-26 6:07 ` [PATCH v5 5/5] mm: rmap: support batched unmapping for file large folios Baolin Wang
2026-01-06 13:22 ` Wei Yang
2026-01-06 21:29 ` Barry Song
2026-01-07 1:46 ` Wei Yang
2026-01-07 2:21 ` Barry Song
2026-01-07 2:29 ` Baolin Wang
2026-01-07 3:31 ` Wei Yang
2026-01-16 9:53 ` Dev Jain
2026-01-16 11:14 ` Lorenzo Stoakes
2026-01-16 14:28 ` Barry Song
2026-01-16 15:23 ` Barry Song
2026-01-16 15:49 ` Baolin Wang
2026-01-18 5:46 ` Dev Jain
2026-01-19 5:50 ` Baolin Wang
2026-01-19 6:36 ` Dev Jain
2026-01-19 7:22 ` Baolin Wang
2026-01-16 15:14 ` Barry Song
2026-01-18 5:48 ` Dev Jain
2026-01-07 6:54 ` Harry Yoo
2026-01-16 8:42 ` Lorenzo Stoakes
2026-01-16 16:26 ` [PATCH] mm: rmap: skip batched unmapping for UFFD vmas Baolin Wang
2026-02-09 9:54 ` David Hildenbrand (Arm)
2026-02-09 10:49 ` Barry Song
2026-02-09 10:58 ` David Hildenbrand (Arm)
2026-02-10 12:01 ` Dev Jain
2026-02-09 9:38 ` [PATCH v5 5/5] mm: rmap: support batched unmapping for file large folios David Hildenbrand (Arm)
2026-02-09 9:43 ` Baolin Wang
2026-02-13 5:19 ` Barry Song
2026-02-18 12:26 ` Dev Jain
2026-01-16 8:41 ` [PATCH v5 0/5] support batch checking of references and unmapping for " Lorenzo Stoakes
2026-01-16 10:53 ` David Hildenbrand (Red Hat)
2026-01-16 10:52 ` David Hildenbrand (Red Hat)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260128114936.72280-1-clm@meta.com \
--to=clm@meta.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=catalin.marinas@arm.com \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=harry.yoo@oracle.com \
--cc=jannh@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=riel@surriel.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=will@kernel.org \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox