From: Muhammad Usama Anjum <usama.anjum@arm.com>
To: Sarthak Sharma <sarthak.sharma@arm.com>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Shuah Khan <shuah@kernel.org>,
Zi Yan <ziy@nvidia.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Nico Pache <npache@redhat.com>,
Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
Barry Song <baohua@kernel.org>, Lance Yang <lance.yang@linux.dev>,
Usama Arif <usama.arif@linux.dev>,
Miaohe Lin <linmiaohe@huawei.com>,
Naoya Horiguchi <nao.horiguchi@gmail.com>,
linux-mm@kvack.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: usama.anjum@arm.com
Subject: Re: [PATCH RESEND v1 3/5] selftests/mm: skip khugepaged swap tests without swap
Date: Wed, 22 Jul 2026 15:05:40 +0100 [thread overview]
Message-ID: <5af250ab-6a52-48d3-bd50-64e8ddd99915@arm.com> (raw)
In-Reply-To: <9bb01e21-159a-427c-9d64-5db7070f0209@arm.com>
Hi,
Thank you for review.
On 22/07/2026 1:16 pm, Sarthak Sharma wrote:
> Hi Usama!
>
> On 7/22/26 2:41 PM, Muhammad Usama Anjum wrote:
>> collapse_swapin_single_pte and collapse_max_ptes_swap require
>> MADV_PAGEOUT to replace anonymous pages with swap entries. On swapless
>> systems there is no backing store with which to create those entries, so
>> check_swap() reports missing setup rather than broken khugepaged behavior.
>>
>> Swapless configurations are common on Android and other constrained
>> test devices. Failing these cases obscures actionable results from the
>> rest of the khugepaged suite.
>>
>> Check /proc/swaps before either swap-dependent case and skip when no
>> active swap area exists. With swap present, retain the existing
>> MADV_PAGEOUT and swap-entry assertions unchanged.
>>
>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@arm.com>
>> ---
>> tools/testing/selftests/mm/khugepaged.c | 34 +++++++++++++++++++++++++
>> 1 file changed, 34 insertions(+)
>>
>> diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c
>> index 10e8dedcb087d..a152cec59fcbd 100644
>> --- a/tools/testing/selftests/mm/khugepaged.c
>> +++ b/tools/testing/selftests/mm/khugepaged.c
>> @@ -100,6 +100,28 @@ static void skip(const char *msg)
>> exit_status = KSFT_SKIP;
>> }
>>
>> +static bool is_swap_enabled(void)
>> +{
>> + char buf[MAX_LINE_LENGTH];
>> + FILE *file;
>> + bool enabled = false;
>> +
>> + file = fopen("/proc/swaps", "r");
>> + if (!file)
>> + return false;
>> +
>> + if (!fgets(buf, sizeof(buf), file))
>> + goto out;
>> +
>> + /* Check for first active swap entry. */
>> + if (fgets(buf, sizeof(buf), file))
>> + enabled = true;
>> +
>> +out:
>> + fclose(file);
>> + return enabled;
>> +}
>> +
>> static void save_settings(void)
>> {
>> ksft_print_msg("Save THP and khugepaged settings...");
>> @@ -734,6 +756,12 @@ static void collapse_swapin_single_pte(struct collapse_context *c, struct mem_op
>> {
>> void *p;
>>
>> + if (!is_swap_enabled()) {
>> + skip("No active swap");
>
> Can we prefix this skip message with a #, as recommended for KTAP
> output? Right now it is printing like this:
It looks like `skip()` is not being prefixed with `#` in this test
because of how it is currently used.
The `skip()` helper itself should probably be fixed, but that can be
handled in a separate follow-up patch. This test is not fully
TAP-compliant at the moment: the normal pass/fail output appears to be
compliant, while the skip-related messages are not. Would it make sense
to address that separately from this series?
Also when we run the whole mm suite using ./run_vmtests.sh, it appends an extra
# in start of the output which we get by running normal test directly. Its
controversial already that we are applying TAP styling to suite level and test
level as well. So non-compliant skip in this test makes overall output
compliant.
>
> # Run test: collapse_swapin_single_pte (khugepaged:anon)
> No active swap
> ok 16 # SKIP collapse_swapin_single_pte
> #
> # Run test: collapse_swapin_single_pte (madvise:anon)
> No active swap
> ok 17 # SKIP collapse_swapin_single_pte
> #
> # Run test: collapse_max_ptes_swap (khugepaged:anon)
> No active swap
> ok 18 # SKIP collapse_max_ptes_swap
> #
> # Run test: collapse_max_ptes_swap (madvise:anon)
> No active swap
>
>
>> + ksft_test_result_report(exit_status, "%s\n", __func__);
>> + return;
>> + }
>> +
>> p = ops->setup_area(1);
>> ops->fault(p, 0, hpage_pmd_size);
>>
>> @@ -760,6 +788,12 @@ static void collapse_max_ptes_swap(struct collapse_context *c, struct mem_ops *o
>> int max_ptes_swap = thp_read_num("khugepaged/max_ptes_swap");
>> void *p;
>>
>> + if (!is_swap_enabled()) {
>> + skip("No active swap");
>
> Same here.
>
>> + ksft_test_result_report(exit_status, "%s\n", __func__);
>> + return;
>> + }
>> +
>> p = ops->setup_area(1);
>> ops->fault(p, 0, hpage_pmd_size);
>>
>
--
Thanks,
Usama
next prev parent reply other threads:[~2026-07-22 14:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-22 9:11 [PATCH RESEND v1 0/5] selftests/mm: Handle unsupported and transient test conditions Muhammad Usama Anjum
2026-07-22 9:11 ` [PATCH RESEND v1 1/5] selftests/mm: skip COW tmpfile cases when fallocate() is unsupported Muhammad Usama Anjum
2026-07-23 6:27 ` Sarthak Sharma
2026-07-22 9:11 ` [PATCH RESEND v1 2/5] selftests/mm: skip guard hole-punch test if MADV_REMOVE " Muhammad Usama Anjum
2026-07-23 6:52 ` Sarthak Sharma
2026-07-22 9:11 ` [PATCH RESEND v1 3/5] selftests/mm: skip khugepaged swap tests without swap Muhammad Usama Anjum
2026-07-22 12:16 ` Sarthak Sharma
2026-07-22 14:05 ` Muhammad Usama Anjum [this message]
2026-07-23 5:08 ` Sarthak Sharma
2026-07-23 11:36 ` Muhammad Usama Anjum
2026-07-22 9:11 ` [PATCH RESEND v1 4/5] selftests/mm: skip page-cache hwpoison tests on NFS Muhammad Usama Anjum
2026-07-22 9:11 ` [PATCH RESEND v1 5/5] selftests/mm: retry migration failures for the full runtime Muhammad Usama Anjum
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=5af250ab-6a52-48d3-bd50-64e8ddd99915@arm.com \
--to=usama.anjum@arm.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linmiaohe@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=nao.horiguchi@gmail.com \
--cc=npache@redhat.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=sarthak.sharma@arm.com \
--cc=shuah@kernel.org \
--cc=surenb@google.com \
--cc=usama.arif@linux.dev \
--cc=vbabka@kernel.org \
--cc=ziy@nvidia.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®