From: Chunyu Hu <chuhu@redhat.com>
To: Zi Yan <ziy@nvidia.com>
Cc: Mike Rapoport <rppt@kernel.org>,
akpm@linux-foundation.org, david@kernel.org, shuah@kernel.org,
linux-mm@kvack.org, ljs@kernel.org,
linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com,
vbabka@suse.cz, surenb@google.com, mhocko@suse.com,
baolin.wang@linux.alibaba.com, npache@redhat.com,
ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org,
lance.yang@linux.dev, Li Wang <liwang@redhat.com>
Subject: Re: [RESEND PATCH 3/4] selftests/mm: split_huge_page_test: skip the test when thp is not available
Date: Mon, 16 Mar 2026 11:51:23 +0800 [thread overview]
Message-ID: <abd-O8yFlB-ZFu7e@gmail.com> (raw)
In-Reply-To: <DC5C1A71-2250-4723-9CEF-EDD300DD26E8@nvidia.com>
On Fri, Mar 13, 2026 at 11:27:30AM -0400, Zi Yan wrote:
> On 13 Mar 2026, at 11:15, Mike Rapoport wrote:
>
> > On Thu, Mar 12, 2026 at 10:11:12AM -0400, Zi Yan wrote:
> >> On 12 Mar 2026, at 7:40, Chunyu Hu wrote:
> >>
> >>> When thp is not enabled on some kernel config such as realtime kernel, the
> >>> test will report failure. Fix the false positive by skipping the test
> >>> directly when thp is not enabled.
> >>>
> >>> There's a naming conflict on write_file() function, both thp_settings.h and
> >>> split_huge_page_test.c define it. To make use of thp_is_enabled() helper in
> >>> the thp_settings.h, rename this local write_file to safe_write_file to
> >>> avoid the conflict. The reason to use 'safe_' is it does some error check.
> >>
> >> Both write_file() do safe checks. Actually the code of both functions looks
> >> almost identical except that the thp_settings one does exit() instead of
> >> ksft_exit_fail_msg().
> >>
> >> Can you rename the split_huge_page_test’s write_file() to write_file_local()
> >> and add a comment above the function like
> >> /* add _local to avoid a function conflict with thp_settings.h */?
> >
> > Looks like we can move the version that uses ksft_exit_fail_msg() to
> > vm_util and drop the other one.
>
> Could work.
>
> tools/testing/selftests/mm/khugepaged.c uses the write_file() from
> thp_settings.h in file_setup_area(), which is part of struct mem_ops.
> I thought struct mem_ops was passed to some syscall, but it turns out
> that it is used locally. The only downside is that file_setup_area() now
> has this ksefltest friendly code. Someone might want to clean up
> tools/testing/selftests/mm/khugepaged.c with kselftests APIs. :)
It looks like work in my try, even before the cleanup with the
kselftest APIs.
>
>
> >
> >> With that, feel free to add:
> >>
> >> Reviewed-by: Zi Yan <ziy@nvidia.com>
> >>
> >> Thanks.
> >>
> >>>
> >>> Tested with thp disabled kernel:
> >>> Before The fix:
> >>> # --------------------------------------------------
> >>> # running ./split_huge_page_test /tmp/xfs_dir_Ywup9p
> >>> # --------------------------------------------------
> >>> # TAP version 13
> >>> # Bail out! Reading PMD pagesize failed
> >>> # # Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0
> >>> # [FAIL]
> >>> not ok 61 split_huge_page_test /tmp/xfs_dir_Ywup9p # exit=1
> >>>
> >>> After the fix:
> >>> # --------------------------------------------------
> >>> # running ./split_huge_page_test /tmp/xfs_dir_YHPUPl
> >>> # --------------------------------------------------
> >>> # TAP version 13
> >>> # 1..0 # SKIP Transparent Hugepages not available
> >>> # [SKIP]
> >>> ok 6 split_huge_page_test /tmp/xfs_dir_YHPUPl # SKIP
> >>>
> >>> CC: Li Wang <liwang@redhat.com>
> >>> Signed-off-by: Chunyu Hu <chuhu@redhat.com>
> >>> ---
> >>> tools/testing/selftests/mm/split_huge_page_test.c | 9 +++++++--
> >>> 1 file changed, 7 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/testing/selftests/mm/split_huge_page_test.c
> >>> index e0167111bdd1..615b75ca62cc 100644
> >>> --- a/tools/testing/selftests/mm/split_huge_page_test.c
> >>> +++ b/tools/testing/selftests/mm/split_huge_page_test.c
> >>> @@ -21,6 +21,7 @@
> >>> #include <time.h>
> >>> #include "vm_util.h"
> >>> #include "kselftest.h"
> >>> +#include "thp_settings.h"
> >>>
> >>> uint64_t pagesize;
> >>> unsigned int pageshift;
> >>> @@ -255,7 +256,7 @@ static int check_after_split_folio_orders(char *vaddr_start, size_t len,
> >>> return status;
> >>> }
> >>>
> >>> -static void write_file(const char *path, const char *buf, size_t buflen)
> >>> +static void safe_write_file(const char *path, const char *buf, size_t buflen)
> >>> {
> >>> int fd;
> >>> ssize_t numwritten;
> >>> @@ -283,7 +284,7 @@ static void write_debugfs(const char *fmt, ...)
> >>> if (ret >= INPUT_MAX)
> >>> ksft_exit_fail_msg("%s: Debugfs input is too long\n", __func__);
> >>>
> >>> - write_file(SPLIT_DEBUGFS, input, ret + 1);
> >>> + safe_write_file(SPLIT_DEBUGFS, input, ret + 1);
> >>> }
> >>>
> >>> static char *allocate_zero_filled_hugepage(size_t len)
> >>> @@ -772,6 +773,10 @@ int main(int argc, char **argv)
> >>> ksft_finished();
> >>> }
> >>>
> >>> + if (!thp_is_enabled()) {
> >>> + ksft_exit_skip("Transparent Hugepages not available\n");
> >>> + }
> >>> +
> >>> if (argc > 1)
> >>> optional_xfs_path = argv[1];
> >>>
> >>> --
> >>> 2.53.0
> >>
> >>
> >> Best Regards,
> >> Yan, Zi
> >
> > --
> > Sincerely yours,
> > Mike.
>
>
> Best Regards,
> Yan, Zi
>
next prev parent reply other threads:[~2026-03-16 3:51 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-12 11:40 [PATCH 0/4] selftests/mm: skip several tests when thp is not available Chunyu Hu
2026-03-12 11:40 ` [RESEND PATCH 1/4] selftests/mm/guard-regions: skip collapse test when thp not enabled Chunyu Hu
2026-03-12 13:58 ` Zi Yan
2026-03-12 19:48 ` David Hildenbrand (Arm)
2026-03-13 15:35 ` Lorenzo Stoakes (Oracle)
2026-03-12 11:40 ` [RESEND PATCH 2/4] selftests/mm: soft-dirty: skip two tests when thp is not available Chunyu Hu
2026-03-12 14:00 ` Zi Yan
2026-03-12 19:43 ` David Hildenbrand (Arm)
2026-03-13 17:37 ` Lorenzo Stoakes (Oracle)
2026-03-12 11:40 ` [RESEND PATCH 3/4] selftests/mm: split_huge_page_test: skip the test " Chunyu Hu
2026-03-12 14:11 ` Zi Yan
2026-03-13 2:29 ` Chunyu Hu
2026-03-13 15:15 ` Mike Rapoport
2026-03-13 15:27 ` Zi Yan
2026-03-13 18:00 ` Lorenzo Stoakes (Oracle)
2026-03-16 3:51 ` Chunyu Hu [this message]
2026-03-16 3:46 ` Chunyu Hu
2026-03-12 19:44 ` David Hildenbrand (Arm)
2026-03-13 2:25 ` Chunyu Hu
2026-03-12 11:40 ` [RESEND PATCH 4/4] selftests/mm: transhuge_stress: skip the test when thp " Chunyu Hu
2026-03-12 14:11 ` Zi Yan
2026-03-12 19:46 ` David Hildenbrand (Arm)
2026-03-13 2:43 ` Chunyu Hu
2026-03-13 18:01 ` Lorenzo Stoakes (Oracle)
2026-03-12 14:03 ` [PATCH 0/4] selftests/mm: skip several tests when thp is " Mike Rapoport
2026-03-13 0:26 ` Chunyu Hu
2026-03-13 15:19 ` Mike Rapoport
2026-03-13 15:40 ` Lorenzo Stoakes (Oracle)
2026-03-14 0:22 ` Chunyu Hu
2026-03-14 0:27 ` Chunyu Hu
2026-03-12 19:39 ` David Hildenbrand (Arm)
2026-03-13 2:21 ` Chunyu Hu
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=abd-O8yFlB-ZFu7e@gmail.com \
--to=chuhu@redhat.com \
--cc=Liam.Howlett@oracle.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=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=liwang@redhat.com \
--cc=ljs@kernel.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=npache@redhat.com \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shuah@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--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 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.