Re: [PATCH] selftests/mm: khugepaged: skip swap tests when swap is unavailable
From: Jaeyeon Lee
Date: Thu Jul 16 2026 - 10:01:23 EST
> I would not pack a "let's test if swapping in the system even works" into a
> khugeapged test.
>
> I think we can reasonably assume here "swap subsystem is not completely broken".
I understand the point. I won't pursue this further.
Thank you for taking the time to review.
On Thu, Jul 16, 2026 at 1:20 PM David Hildenbrand (Arm)
<david@xxxxxxxxxx> wrote:
>
> On 7/15/26 16:47, Dev Jain wrote:
> >
> >
> > On 15/07/26 7:39 pm, David Hildenbrand (Arm) wrote:
> >> On 7/15/26 15:34, Jaeyeon Lee wrote:
> >>> The collapse_swapin_single_pte and collapse_max_ptes_swap tests use
> >>> MADV_PAGEOUT to swap out pages before verifying khugepaged collapse
> >>> behavior. On systems without swap configured, MADV_PAGEOUT succeeds
> >>> but the pages are not actually swapped out, so check_swap() returns
> >>> false and the tests report a failure.
> >>>
> >>> These tests cannot run meaningfully without swap, so a missing swap
> >>> area is an environment limitation rather than a test failure. Detect
> >>> the absence of swap via /proc/swaps and skip the affected tests
> >>> instead of failing them.
> >>>
> >>> Signed-off-by: Jaeyeon Lee <jaeyeon.lee.dev@xxxxxxxxx>
> >>> ---
> >>> tools/testing/selftests/mm/khugepaged.c | 25 +++++++++++++++++++++++++
> >>> 1 file changed, 25 insertions(+)
> >>>
> >>> diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c
> >>> index 10e8dedcb087..f9b4ebe733ce 100644
> >>> --- a/tools/testing/selftests/mm/khugepaged.c
> >>> +++ b/tools/testing/selftests/mm/khugepaged.c
> >>> @@ -100,6 +100,22 @@ static void skip(const char *msg)
> >>> exit_status = KSFT_SKIP;
> >>> }
> >>>
> >>> +static bool swap_available(void)
> >>> +{
> >>> + char buf[256];
> >>> + bool ret;
> >>> + FILE *fp = fopen("/proc/swaps", "r");
> >>> +
> >>> + if (!fp)
> >>> + return false;
> >>> +
> >>> + fgets(buf, sizeof(buf), fp);
> >>> + ret = !!fgets(buf, sizeof(buf), fp);
> >>> +
> >>> + fclose(fp);
> >>> + return ret;
> >>> +}
> >>> +
> >>
> >> That doesn't mean that swapout will succeed.
> >>
> >> Take a look at cow.c where we use pagemap_is_swapped() after MADV_PAGEOUT.
> >
> > That suffers from the reverse problem - in case of a real swap bug, cow.c
> > will skip the test and anyone running the test won't bother.
>
> Yes, because there could be other reasons why MADV_PAGEOUT would not be
> successful (speculative page references, out of swap space).
>
> >
> > I think this patch idea is reasonable, we need a way to say "swap definitely
> > won't succeed because there is no swap device, so skip" vs "swap failed,
> > need to dig in!" .
>
> I would not pack a "let's test if swapping in the system even works" into a
> khugeapged test.
>
> I think we can reasonably assume here "swap subsystem is not completely broken".
>
> And if we want to check for that, have a separate test that stresses swapping,
> if available.
>
> --
> Cheers,
>
> David