> 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

