Re: [PATCH v4 2/7] mm/khugepaged: extract reference check into folio_pte_referenced() helper
From: Baolin Wang
Date: Wed Aug 12 2026 - 05:28:22 EST
On 8/11/26 8:48 PM, Nico Pache (Red Hat) wrote:
This change deduplicates the "is this PTE/folio referenced enough to be
considered for a collapse" condition that was repeated in both
__collapse_huge_page_isolate() and collapse_scan_pmd(), extracting it into
a single inline helper function.
Also move the comment and use it as the function header. While we are at
it, updated the comment to clarify that a young pte is a recently accessed
one.
Acked-by: Usama Arif <usama.arif@xxxxxxxxx>
Signed-off-by: Nico Pache (Red Hat) <nico.pache@xxxxxxxxx>
---
mm/khugepaged.c | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 1e26ea97381a..8babd4c97db6 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -672,6 +672,22 @@ static void release_pte_pages(pte_t *pte, pte_t *_pte,
}
}
+/*
+ * folio_pte_referenced() - Check if a folio or its PTE mapping was recently used
+ *
+ * Return: true if recent access was observed through either the folio state
+ * or the current PTE mapping.
+ */
+static inline bool folio_pte_referenced(struct folio *folio,
+ struct vm_area_struct *vma, unsigned long addr, pte_t pteval)
+{
+ /* The folio was referenced previously ... */
+ if (folio_test_young(folio) || folio_test_referenced(folio))
+ return true;
+ /* ... or the PTE mapping was recently used */
+ return pte_young(pteval) || mmu_notifier_test_young(vma->vm_mm, addr);
+}
Thanks David for asking again to move the 'cc->is_khugepaged' out of this helper. I also suggested this before[1]. So
Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
[1] https://lore.kernel.org/all/62b2bd29-28d2-4440-a970-526dd5d5bbe0@xxxxxxxxxxxxxxxxx/