From: Aboorva Devarajan <aboorvad@linux.ibm.com>
To: akpm@linux-foundation.org, Liam.Howlett@oracle.com,
lorenzo.stoakes@oracle.com, shuah@kernel.org, pfalcato@suse.de,
david@redhat.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com,
npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com,
baohua@kernel.org
Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org, donettom@linux.ibm.com,
ritesh.list@gmail.com, aboorvad@linux.ibm.com
Subject: [PATCH 4/6] mm/selftests: Fix split_huge_page_test failure on systems with 64KB page size
Date: Mon, 16 Jun 2025 21:36:30 +0530 [thread overview]
Message-ID: <20250616160632.35250-5-aboorvad@linux.ibm.com> (raw)
In-Reply-To: <20250616160632.35250-1-aboorvad@linux.ibm.com>
From: Donet Tom <donettom@linux.ibm.com>
The split_huge_page_test fails on systems with a 64KB base page size.
This is because the order of a 2MB huge page is different:
On 64KB systems, the order is 5.
On 4KB systems, it's 9.
The test currently assumes a maximum huge page order of 9, which is only
valid for 4KB base page systems. On systems with 64KB pages, attempting
to split huge pages beyond their actual order (5) causes the test to fail.
In this patch, we calculate the huge page order based on the system's base
page size. With this change, the tests now run successfully on both 64KB
and 4KB page size systems.
Signed-off-by: Donet Tom <donettom@linux.ibm.com>
Signed-off-by: Aboorva Devarajan <aboorvad@linux.ibm.com>
---
.../selftests/mm/split_huge_page_test.c | 23 +++++++++++++++----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/testing/selftests/mm/split_huge_page_test.c
index aa7400ed0e99..16f3e5b9ce6d 100644
--- a/tools/testing/selftests/mm/split_huge_page_test.c
+++ b/tools/testing/selftests/mm/split_huge_page_test.c
@@ -514,6 +514,15 @@ void split_thp_in_pagecache_to_order_at(size_t fd_size, const char *fs_loc,
}
}
+static unsigned int get_order(unsigned int pages)
+{
+ unsigned int order = 0;
+
+ while ((1U << order) < pages)
+ order++;
+ return order;
+}
+
int main(int argc, char **argv)
{
int i;
@@ -523,6 +532,7 @@ int main(int argc, char **argv)
const char *fs_loc;
bool created_tmp;
int offset;
+ unsigned int max_order;
ksft_print_header();
@@ -534,11 +544,14 @@ int main(int argc, char **argv)
if (argc > 1)
optional_xfs_path = argv[1];
- ksft_set_plan(1+8+1+9+9+8*4+2);
pagesize = getpagesize();
pageshift = ffs(pagesize) - 1;
pmd_pagesize = read_pmd_pagesize();
+ max_order = get_order(pmd_pagesize/pagesize);
+
+ ksft_set_plan(1+(max_order-1)+1+max_order+max_order+(max_order-1)*4+2);
+
if (!pmd_pagesize)
ksft_exit_fail_msg("Reading PMD pagesize failed\n");
@@ -546,20 +559,20 @@ int main(int argc, char **argv)
split_pmd_zero_pages();
- for (i = 0; i < 9; i++)
+ for (i = 0; i < max_order; i++)
if (i != 1)
split_pmd_thp_to_order(i);
split_pte_mapped_thp();
- for (i = 0; i < 9; i++)
+ for (i = 0; i < max_order; i++)
split_file_backed_thp(i);
created_tmp = prepare_thp_fs(optional_xfs_path, fs_loc_template,
&fs_loc);
- for (i = 8; i >= 0; i--)
+ for (i = (max_order-1); i >= 0; i--)
split_thp_in_pagecache_to_order_at(fd_size, fs_loc, i, -1);
- for (i = 0; i < 9; i++)
+ for (i = 0; i < max_order; i++)
for (offset = 0;
offset < pmd_pagesize / pagesize;
offset += MAX(pmd_pagesize / pagesize / 4, 1 << i))
--
2.43.5
next prev parent reply other threads:[~2025-06-16 16:07 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-16 16:06 [PATCH 0/6] selftests/mm: Fix false positives and skip unsupported tests Aboorva Devarajan
2025-06-16 16:06 ` [PATCH 1/6] mm/selftests: Fix virtual_address_range test issues Aboorva Devarajan
2025-06-16 16:27 ` Dev Jain
2025-06-18 10:06 ` Donet Tom
2025-06-18 10:35 ` Dev Jain
2025-06-18 11:22 ` Lorenzo Stoakes
2025-06-18 11:28 ` Dev Jain
2025-06-18 11:37 ` Lorenzo Stoakes
2025-06-18 11:45 ` Dev Jain
2025-06-18 11:57 ` Lorenzo Stoakes
2025-06-18 11:59 ` Lorenzo Stoakes
2025-06-18 13:58 ` Dev Jain
2025-06-18 14:07 ` Lorenzo Stoakes
2025-06-18 14:17 ` Dev Jain
2025-06-18 14:35 ` Lorenzo Stoakes
2025-06-18 14:43 ` Dev Jain
2025-06-19 8:23 ` Donet Tom
2025-06-19 9:02 ` Dev Jain
2025-06-19 15:31 ` Donet Tom
2025-06-19 16:14 ` Dev Jain
2025-06-20 14:45 ` Dev Jain
2025-06-21 17:55 ` Donet Tom
2025-06-23 4:53 ` Dev Jain
2025-06-23 4:55 ` Dev Jain
2025-06-23 17:32 ` Donet Tom
2025-06-24 6:15 ` Dev Jain
2025-06-25 9:36 ` Donet Tom
2025-06-25 10:45 ` Dev Jain
2025-06-25 12:52 ` Dev Jain
2025-06-25 17:17 ` Donet Tom
2025-06-26 3:57 ` Dev Jain
2025-06-26 5:42 ` Donet Tom
2025-06-26 5:55 ` Dev Jain
2025-06-26 6:35 ` Dev Jain
2025-06-26 6:52 ` Donet Tom
2025-06-18 11:50 ` Lorenzo Stoakes
2025-06-16 16:06 ` [PATCH 2/6] selftest/mm: Fix ksm_funtional_test failures Aboorva Devarajan
2025-06-16 17:04 ` Liam R. Howlett
2025-06-17 15:10 ` donettom
2025-06-16 16:06 ` [PATCH 3/6] selftests/mm : fix test_prctl_fork_exec failure Aboorva Devarajan
2025-06-16 16:28 ` Dev Jain
2025-06-17 15:04 ` donettom
2025-06-16 16:06 ` Aboorva Devarajan [this message]
2025-06-16 16:06 ` [PATCH 5/6] selftests/mm: Fix child process exit codes in KSM tests Aboorva Devarajan
2025-06-16 16:06 ` [PATCH 6/6] selftests/mm: Mark thuge-gen as skipped if shmmax is too small or no 1G pages Aboorva Devarajan
2025-06-16 16:11 ` [PATCH 0/6] selftests/mm: Fix false positives and skip unsupported tests Lorenzo Stoakes
2025-06-17 7:53 ` Aboorva Devarajan
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=20250616160632.35250-5-aboorvad@linux.ibm.com \
--to=aboorvad@linux.ibm.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@redhat.com \
--cc=dev.jain@arm.com \
--cc=donettom@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=npache@redhat.com \
--cc=pfalcato@suse.de \
--cc=ritesh.list@gmail.com \
--cc=ryan.roberts@arm.com \
--cc=shuah@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;
as well as URLs for NNTP newsgroup(s).