[PATCH v2 12/15] arm64: mm: avoid contpte A/D aggregation in fast-GUP
Yunhui Cui
cuiyunhui at bytedance.com
Thu Jul 16 05:41:47 PDT 2026
fast-GUP only needs the PTE state for the current virtual address and
revalidates the raw PTE after pinning the page. It does not consume the
contpte block-wide accessed/dirty aggregation provided by the public
lockless getter.
Override the fast-GUP PTE helpers to use the raw PTE for the current
entry and raw revalidation. Keep the public ptep_get_lockless() semantics
unchanged for other lockless users.
Signed-off-by: Yunhui Cui <cuiyunhui at bytedance.com>
---
arch/arm64/include/asm/pgtable.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 018781a1fcbee..d1e08dce9f7c5 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -1760,6 +1760,22 @@ static inline pte_t ptep_get_lockless(pte_t *ptep)
return contpte_ptep_get_lockless(ptep);
}
+#define gup_ptep_get_lockless gup_ptep_get_lockless
+static inline pte_t gup_ptep_get_lockless(pte_t *ptep, pte_t *rawp)
+{
+ pte_t pte = __ptep_get(ptep);
+
+ *rawp = pte;
+
+ return pte;
+}
+
+#define gup_ptep_revalidate gup_ptep_revalidate
+static inline bool gup_ptep_revalidate(pte_t *ptep, pte_t raw_pte)
+{
+ return pte_val(raw_pte) == pte_val(__ptep_get(ptep));
+}
+
static inline void set_pte(pte_t *ptep, pte_t pte)
{
/*
--
2.39.5
More information about the kvm-riscv
mailing list