From: Jaeyeon Lee <jaeyeon.lee.dev@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
Shuah Khan <shuah@kernel.org>
Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org,
Jaeyeon Lee <jaeyeon.lee.dev@gmail.com>
Subject: [PATCH] selftests/mm: khugepaged: skip swap tests when swap is unavailable
Date: Wed, 15 Jul 2026 15:34:17 +0200 [thread overview]
Message-ID: <20260715133418.170386-1-jaeyeon.lee.dev@gmail.com> (raw)
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@gmail.com>
---
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;
+}
+
static void save_settings(void)
{
ksft_print_msg("Save THP and khugepaged settings...");
@@ -742,6 +758,9 @@ static void collapse_swapin_single_pte(struct collapse_context *c, struct mem_op
ksft_exit_fail_perror("madvise(MADV_PAGEOUT)");
if (check_swap(p, page_size)) {
success("OK");
+ } else if (!swap_available()) {
+ skip("Swap is not available");
+ goto out;
} else {
fail("Fail");
goto out;
@@ -768,6 +787,9 @@ static void collapse_max_ptes_swap(struct collapse_context *c, struct mem_ops *o
ksft_exit_fail_perror("madvise(MADV_PAGEOUT)");
if (check_swap(p, (max_ptes_swap + 1) * page_size)) {
success("OK");
+ } else if (!swap_available()) {
+ skip("Swap is not available");
+ goto out;
} else {
fail("Fail");
goto out;
@@ -785,6 +807,9 @@ static void collapse_max_ptes_swap(struct collapse_context *c, struct mem_ops *o
ksft_exit_fail_perror("madvise(MADV_PAGEOUT)");
if (check_swap(p, max_ptes_swap * page_size)) {
success("OK");
+ } else if (!swap_available()) {
+ skip("Swap is not available");
+ goto out;
} else {
fail("Fail");
goto out;
base-commit: 7081238c5ca29839924f13bf5daa80763bc589f2
--
2.43.0
next reply other threads:[~2026-07-15 13:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-15 13:34 Jaeyeon Lee [this message]
2026-07-15 14:09 ` [PATCH] selftests/mm: khugepaged: skip swap tests when swap is unavailable David Hildenbrand (Arm)
2026-07-15 14:47 ` Dev Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260715133418.170386-1-jaeyeon.lee.dev@gmail.com \
--to=jaeyeon.lee.dev@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.