Re: [PATCH v4 3/7] mm/khugepaged: introduce a count_collapse_event() helper

From: Pedro Falcato

Date: Wed Aug 12 2026 - 05:50:15 EST


On Tue, Aug 11, 2026 at 06:48:35AM -0600, Nico Pache (Red Hat) wrote:
> Provide a simple helper function to help reduce a often used, and
> duplicate pattern across the khugepaged code.
>
> When collapsing to a PMD we need to record a vm_event and the mTHP_stat
> event. When doing mTHP collapse we only update the mTHP stat.
>
> Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
> Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
> Acked-by: Usama Arif <usama.arif@xxxxxxxxx>
> Signed-off-by: Nico Pache (Red Hat) <nico.pache@xxxxxxxxx>
> ---
> mm/khugepaged.c | 42 +++++++++++++++++++++---------------------
> 1 file changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> index 8babd4c97db6..cae510aa2914 100644
> --- a/mm/khugepaged.c
> +++ b/mm/khugepaged.c
> @@ -688,6 +688,14 @@ static inline bool folio_pte_referenced(struct folio *folio,
> return pte_young(pteval) || mmu_notifier_test_young(vma->vm_mm, addr);
> }
>
> +static void count_collapse_event(unsigned int order, enum vm_event_item vm_event,
> + enum mthp_stat_item mthp_event)
> +{
> + if (is_pmd_order(order))
> + count_vm_event(vm_event);
> + count_mthp_stat(order, mthp_event);

Maintaining two counters for the same thing is Peak Tech Debt. Would it be
somehow possible to redirect /proc/vmstat to PMD_ORDER mTHP stats?

> +}
> +
> static enum scan_result __collapse_huge_page_isolate(struct vm_area_struct *vma,
> unsigned long start_addr, pte_t *pte, struct collapse_control *cc,
> unsigned int order, struct list_head *compound_pagelist)
> @@ -708,9 +716,8 @@ static enum scan_result __collapse_huge_page_isolate(struct vm_area_struct *vma,
> if (pte_none_or_zero(pteval)) {
> if (++none_or_zero > max_ptes_none) {
> result = SCAN_EXCEED_NONE_PTE;
> - if (is_pmd_order(order))
> - count_vm_event(THP_SCAN_EXCEED_NONE_PTE);
> - count_mthp_stat(order, MTHP_STAT_COLLAPSE_EXCEED_NONE);
> + count_collapse_event(order, THP_SCAN_EXCEED_NONE_PTE,
> + MTHP_STAT_COLLAPSE_EXCEED_NONE);

This is nicer than open coding the add, though. One step at a time :)

Reviewed-by: Pedro Falcato <pfalcato@xxxxxxx>

--
Pedro