Re: [PATCH 04/12] mm/collapse: add collapse.h for the collapse interface

From: Zi Yan

Date: Fri Sep 04 2026 - 22:37:11 EST


On Fri Sep 4, 2026 at 11:10 AM EDT, Kiryl Shutsemau wrote:
> From: "Kiryl Shutsemau (Meta)" <kas@xxxxxxxxxx>
>
> khugepaged.c holds both the users of collapse and the machinery that
> performs it. The daemon's scan loop, the sysfs tunables, MADV_COLLAPSE's
> entry point and the collapse itself all sit in one file and reach into
> each other freely. Nothing marks where a user ends and the engine
> begins.
>
> Start drawing that line.
>
> Add mm/collapse.h for what the two sides have to agree on:
>
> - enum scan_result - what the engine hands back;
> - struct collapse_control - the state a request carries.
>
> And two constants move with them:
>
> - KHUGEPAGED_MAX_PTES_LIMIT -> COLLAPSE_MAX_PTES_LIMIT;
> - KHUGEPAGED_MIN_MTHP_ORDER -> COLLAPSE_MIN_MTHP_ORDER.
>
> Neither is a fact about the daemon, so both lose the KHUGEPAGED_ prefix.
>
> No functional change.
>
> Assisted-by: Claude-Code:claude-opus-5
> Signed-off-by: Kiryl Shutsemau (Meta) <kas@xxxxxxxxxx>
> ---
> MAINTAINERS | 1 +
> mm/collapse.h | 67 +++++++++++++++++++++++++++++++++++++++++
> mm/khugepaged.c | 79 ++++++++-----------------------------------------
> 3 files changed, 81 insertions(+), 66 deletions(-)
> create mode 100644 mm/collapse.h
>

<snip>
> +
> +enum scan_result {
> + SCAN_FAIL,
> + SCAN_SUCCEED,
> + SCAN_NO_PTE_TABLE,
> + SCAN_PMD_MAPPED,
> + SCAN_EXCEED_NONE_PTE,
> + SCAN_EXCEED_SWAP_PTE,
> + SCAN_EXCEED_SHARED_PTE,
> + SCAN_PTE_NON_PRESENT,
> + SCAN_PTE_UFFD,
> + SCAN_PTE_MAPPED_HUGEPAGE,
> + SCAN_LACK_REFERENCED_PAGE,
> + SCAN_PAGE_NULL,
> + SCAN_SCAN_ABORT,
> + SCAN_PAGE_COUNT,
> + SCAN_PAGE_LRU,
> + SCAN_PAGE_LOCK,
> + SCAN_PAGE_ANON,
> + SCAN_PAGE_LAZYFREE,
> + SCAN_PAGE_COMPOUND,
> + SCAN_ANY_PROCESS,
> + SCAN_VMA_NULL,
> + SCAN_VMA_CHECK,
> + SCAN_ADDRESS_RANGE,
> + SCAN_DEL_PAGE_LRU,
> + SCAN_ALLOC_HUGE_PAGE_FAIL,
> + SCAN_CGROUP_CHARGE_FAIL,
> + SCAN_TRUNCATED,
> + SCAN_PAGE_HAS_PRIVATE,
> + SCAN_STORE_FAILED,
> + SCAN_COPY_MC,
> + SCAN_PAGE_FILLED,
> + SCAN_PAGE_DIRTY_OR_WRITEBACK,
> +};

Are you planning to clean up scan_result? SCAN_SCAN_ABORT sounds funny,
SCAN_ANY_PROCESS means nothing, SCAN_COPY_MC might better be
COLLAPSE_COPY_MC.

Anyway, for this patch,

Reviewed-by: Zi Yan <ziy@xxxxxxxxxx>



--
Best Regards,
Yan, Zi