Re: [PATCH v3 02/18] selftests/mm: skip collapse_compound_extreme where the PMD is too large

From: Mike Rapoport

Date: Thu Aug 13 2026 - 11:09:05 EST


> collapse_compound_extreme builds a PTE table full of distinct PTE-mapped

Nit: we usually add brakets to function names :)

> compound pages by cycling hpage_pmd_nr fault-time THPs through mremap. It
> therefore needs hpage_pmd_nr PMD-order allocations in a row. That is fine
> at a 2M PMD (4K base pages) or a 32M one (16K), but a 512M PMD -- arm64
> with 64K base pages -- makes each of those an order-13 allocation, which
> the allocator cannot reliably hand out even once, let alone 8192 times.
>
> The failure is not a quiet one: the case calls ksft_exit_fail_msg(), so the
> whole binary stops and every case after it is lost.
>
> Skip the case where the PMD is larger than 32M. The MADV_COLLAPSE cases
> still cover PMD-order collapse on those configurations, and 4K and 16K
> PMDs are unaffected.
>
> Assisted-by: Claude-Code:claude-opus-5
> Tested-by: Muhammad Usama Anjum <usama.anjum@xxxxxxx>
> Signed-off-by: Kiryl Shutsemau (Meta) <kas@xxxxxxxxxx>
>
> diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c
> index 018b0698229c..48eb74c255f6 100644
> --- a/tools/testing/selftests/mm/khugepaged.c
> +++ b/tools/testing/selftests/mm/khugepaged.c
> @@ -974,6 +974,16 @@ static void collapse_compound_extreme(struct collapse_context *c, struct mem_ops
> void *p;
> int i;
>
> + /*
> + * The test needs hpage_pmd_nr PMD-order allocations, which is likely to
> + * fail for large PMD sizes. Skip if the PMD size is over 32M.
> + */
> + if (hpage_pmd_size > (32UL << 20)) {
> + ksft_test_result_skip("%s: PMD too large for fault-time THP construction\n",
> + __func__);
> + return;
> + }
> +
> p = ops->setup_area(1);
> ksft_print_msg("Construct PTE page table full of different PTE-mapped compound pages\n");
> for (i = 0; i < hpage_pmd_nr; i++) {

Reviewed-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>

--
Sincerely yours,
Mike.