On 15 Jan 2025, at 21:52, Zi Yan wrote:
On 10 Jan 2025, at 18:50, Zi Yan wrote:
Kernel already supports splitting a folio to any lower order. Test it.
Signed-off-by: Zi Yan ziy@nvidia.com
tools/testing/selftests/mm/split_huge_page_test.c | 13 ++++++++----- 1 file changed, 8 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 128004308233..3d3bc40a268b 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -144,7 +144,7 @@ void split_pmd_zero_pages(void) free(one_page); }
-void split_pmd_thp(void) +void split_pmd_thp_to_order(int order) { char *one_page; size_t len = 4 * pmd_pagesize; @@ -164,7 +164,7 @@ void split_pmd_thp(void)
/* split all THPs */ write_debugfs(PID_FMT, getpid(), (uint64_t)one_page,
(uint64_t)one_page + len, 0);
(uint64_t)one_page + len, order);
for (i = 0; i < len; i++) if (one_page[i] != (char)i)
@@ -174,7 +174,7 @@ void split_pmd_thp(void) if (!check_huge_anon(one_page, 0, pmd_pagesize)) ksft_exit_fail_msg("Still AnonHugePages not split\n");
- ksft_test_result_pass("Split huge pages successful\n");
- ksft_test_result_pass("Split huge pages to order %d successful\n", order); free(one_page);
}
@@ -481,7 +481,7 @@ int main(int argc, char **argv) if (argc > 1) optional_xfs_path = argv[1];
- ksft_set_plan(4+9);
ksft_set_plan(1+9+2+9);
pagesize = getpagesize(); pageshift = ffs(pagesize) - 1;
@@ -492,7 +492,10 @@ int main(int argc, char **argv) fd_size = 2 * pmd_pagesize;
split_pmd_zero_pages();
- split_pmd_thp();
- for (i = 0; i < 9; i++)
split_pmd_thp_to_order(i);
- split_pte_mapped_thp(); split_file_backed_thp();
Hi Andrew,
Can you fold the patch below into this one? Anonymous memory does not support order-1 folio, so there is no need to test splitting to order-1. Kernel will WARN_ONCE for split_pmd_thp_to_order(1) test and the whole test will fail at that point.
Please use the one below, since the number of total tests should be adjusted as well. Sorry about the noise.
diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/testing/selftests/mm/split_huge_page_test.c index 3d3bc40a268b..dedab4059c4c 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -481,7 +481,7 @@ int main(int argc, char **argv) if (argc > 1) optional_xfs_path = argv[1];
- ksft_set_plan(1+9+2+9); + ksft_set_plan(1+8+2+9);
pagesize = getpagesize(); pageshift = ffs(pagesize) - 1; @@ -494,7 +494,8 @@ int main(int argc, char **argv) split_pmd_zero_pages();
for (i = 0; i < 9; i++) - split_pmd_thp_to_order(i); + if (i != 1) + split_pmd_thp_to_order(i);
split_pte_mapped_thp(); split_file_backed_thp();
-- Best Regards, Yan, Zi