On 1 Sep 2025, at 9:03, David Hildenbrand wrote:
On 01.09.25 14:56, Zi Yan wrote:
On 1 Sep 2025, at 3:22, David Hildenbrand wrote:
On 31.08.25 04:27, Wei Yang wrote:
Subject: "selftests/mm: verify page content after remapping PMD through PTEs"
After mremap(), add a check on content to see whether mremap corrupt data.
Signed-off-by: Wei Yang richard.weiyang@gmail.com
v2: add check on content instead of just test backed folio
I'm confused, don't we have that exact check later in the function?
Your v1 might have been better, unless I am missing something.
tools/testing/selftests/mm/split_huge_page_test.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/testing/selftests/mm/split_huge_page_test.c index 10ae65ea032f..229b6dcabece 100644 --- a/tools/testing/selftests/mm/split_huge_page_test.c +++ b/tools/testing/selftests/mm/split_huge_page_test.c @@ -423,10 +423,14 @@ static void split_pte_mapped_thp(void) /* smap does not show THPs after mremap, use kpageflags instead */ thp_size = 0;
- for (i = 0; i < pagesize * 4; i++)
- for (i = 0; i < pagesize * 4; i++) {
if (pte_mapped[i] != (char)i)
ksft_exit_fail_msg("%ld byte corrupted\n", i);
if (i % pagesize == 0 && is_backed_by_folio(&pte_mapped[i], pmd_order, pagemap_fd, kpageflags_fd)) thp_size++;
- } if (thp_size != 4) ksft_exit_fail_msg("Some THPs are missing during mremap\n");
I'm a bit confused with this test in general.
We do a
pte_mapped = mremap(one_page, pagesize, pagesize, MREMAP_MAYMOVE);
which I read as a "NOP".
Questions
(a) Will this actually do anything? Also, maybe it does now, but can't the kernel just optimize that out in the future?
It remaps each subpage of 4 PMD THPs into a contiguous 2MB vaddr range and perform split on that range.
I'm afraid I am missing the "why".
I would have thought that a "split_pte_mapped_thp" test would want to pte-map THPs to the see if they can be split.
Why is the mremap required? IOW, what exactly is the test trying to test that exceeds "split_pte_mapped_thp" ?
IMHO, it is an interesting test case for splitting a THP when only a subpage is mapped into a vaddr range and in a contiguous vaddr each page comes from different THPs. The mprotect test case you are mentioning would still have all subpages mapped by contiguous vaddrs.
But if you think both are just testing PTE-mapped THPs, feel free to replace the existing one with the mprotect test case. In addition, is_backed_by_folio() can be reverted back to its prior version, since it no longer needs to handle the case where subpages from different THPs can be mapped into a vaddr range.
-- Best Regards, Yan, Zi