> 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)
<[email protected]> 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 <[email protected]>
> >>> ---
> >>>  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

Reply via email to