Re: [PATCH RFC v4 12/12] selftests/mm: add a slow-GUP content and COW test for mTHP
From: David Hildenbrand (Arm)
Date: Mon Jul 27 2026 - 10:23:25 EST
On 7/26/26 13:56, Mike Rapoport wrote:
> Hi Rik,
>
> On Fri, Jul 24, 2026 at 06:29:34PM -0400, Rik van Riel wrote:
>> follow_page_mask() now batches a PTE-mapped large folio (mTHP) into one
>> contiguous run for the slow get_user_pages() path. A mis-batched run would
>> hand back the wrong pages or a stale COW copy, which the existing tests do
>> not catch: gup_test checks only pin/unpin integrity, and cow exercises COW
>> mostly at PMD size.
>>
>> Add mthp_gup_cow_test. It forces 64kB-only mTHP, writes a per-page-distinct
>> pattern, then pins the region on the slow path (PIN_LONGTERM without
>> USE_FAST) and compares the bytes the kernel copies back from the pinned
>> pages against that pattern.
>>
>> The test covers a read pin, a write pin, and COW after fork(): a child
>> write-pins to force per-page unshare and checks the copied contents, then
>> rewrites its copy while the parent verifies its own contents are intact.
>>
>> It also reports how many pages sit in contiguous large-folio runs, so a
>> kernel without mTHP shows light coverage rather than passing vacuously.
>>
>> Assisted-by: Claude:claude-opus-4.8
>> Signed-off-by: Rik van Riel <riel@xxxxxxxxxxx>
>> ---
>> tools/testing/selftests/mm/Makefile | 1 +
>> .../testing/selftests/mm/mthp_gup_cow_test.c | 213 ++++++++++++++++++
>> tools/testing/selftests/mm/run_vmtests.sh | 1 +
>> 3 files changed, 215 insertions(+)
>> create mode 100644 tools/testing/selftests/mm/mthp_gup_cow_test.c
>>
>> +
>> +static long PS;
>> +static int fails;
>> +static int tap;
>> +
>> +static void ok(int cond, const char *desc)
>> +{
>> + printf("%s %d %s\n", cond ? "ok" : "not ok", ++tap, desc);
>
> Please (instruct claude to) use ksft_* helpers for printing messages and
> tracking failed and passed tests.
I'm afraid we won't have time to keep repeating the following:
Documentation/process/coding-assistants.rst
* Reviewing all AI-generated code
[...]
* Taking full responsibility for the contribution
--
Cheers,
David