On Saturday, 16 August 2025, Wei Yang <richard.weiyang@gmail.com> wrote: > On Sat, Aug 16, 2025 at 09:31:10AM +0530, Aboorva Devarajan wrote: >>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. >> >>Fixes: fa6c02315f745 ("mm: huge_memory: a new debugfs interface for splitting THP tests") >>Co-developed-by: Aboorva Devarajan <aboorvad@linux.ibm.com> >>Signed-off-by: Aboorva Devarajan <aboorvad@linux.ibm.com> >>Reviewed-by: Dev Jain <dev.jain@arm.com> >>Reviewed-by: Zi Yan <ziy@nvidia.com> >>Signed-off-by: Donet Tom <donettom@linux.ibm.com> > > Reviewed-by: Wei Yang <richard.weiyang@gmail.com> > > Nit below: > >>--- >> tools/testing/selftests/mm/cow.c | 5 ----- >> .../selftests/mm/split_huge_page_test.c | 22 ++++++++++++------- >> tools/testing/selftests/mm/uffd-wp-mremap.c | 5 ----- >> tools/testing/selftests/mm/vm_util.h | 5 +++++ >> 4 files changed, 19 insertions(+), 18 deletions(-) >> >>diff --git a/tools/testing/selftests/mm/cow.c b/tools/testing/selftests/mm/cow.c >>index 90ee5779662f..e742d9313798 100644 >>--- a/tools/testing/selftests/mm/cow.c >>+++ b/tools/testing/selftests/mm/cow.c >>@@ -41,11 +41,6 @@ static size_t hugetlbsizes[10]; >> static int gup_fd; >> static bool has_huge_zeropage; >> >>-static int sz2ord(size_t size) >>-{ >>- return __builtin_ctzll(size / pagesize); >>-} >>- >> static int detect_thp_sizes(size_t sizes[], int max) >> { >> int count = 0; >>diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/testing/selftests/mm/split_huge_page_test.c >>index eadbeb820d71..7cbeaebc9d71 100644 >>--- a/tools/testing/selftests/mm/split_huge_page_test.c >>+++ b/tools/testing/selftests/mm/split_huge_page_test.c >>@@ -523,6 +523,9 @@ int main(int argc, char **argv) >> const char *fs_loc; >> bool created_tmp; >> int offset; >>+ unsigned int max_order; >>+ unsigned int nr_pages; >>+ unsigned int tests; >> >> ksft_print_header(); >> >>@@ -534,35 +537,38 @@ 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(); >> if (!pmd_pagesize) >> ksft_exit_fail_msg("Reading PMD pagesize failed\n"); >> >>+ nr_pages = pmd_pagesize / pagesize; >>+ max_order = sz2ord(pmd_pagesize); > ^ > extra space here > >>+ tests = 2 + (max_order - 1) + (2 * max_order) + (max_order - 1) * 4 + 2;
Is it possible to have some defines here instead plain numbers? Thanks
>>+ ksft_set_plan(tests); >>+ >> fd_size = 2 * pmd_pagesize; >> >> split_pmd_zero_pages(); >> > > -- > Wei Yang > Help you, Help me > >