> Collapse serializes against faults, GUP, fork, mremap and zapping > through a protocol of locks, TLB flushes and refcount checks; none of > the khugepaged selftests exercise it under contention. > > Add khugepaged_race: two faulters, MADV_DONTNEED, transient FOLL_PIN > (gup_test), fork and mremap threads race one of three collapse > drivers over the same ranges: > > stepped khugepaged driven one full pass at a time via > khugepaged_full_pass() — deterministic extent per step; > free free-running khugepaged (scan_sleep_millisecs=0) — soak; > madvise MADV_COLLAPSE + MADV_DONTNEED loop — the PMD-order axis. > > diff --git a/tools/testing/selftests/mm/run_vmtests.sh > b/tools/testing/selftests/mm/run_vmtests.sh > index 6f42e35b5227..a8b6b839cb97 100755 > --- a/tools/testing/selftests/mm/run_vmtests.sh > +++ b/tools/testing/selftests/mm/run_vmtests.sh > @@ -404,6 +404,13 @@ CATEGORY="cow" run_test ./cow > > CATEGORY="thp" run_test ./folio_order_check > > + > +CATEGORY="thp" run_test ./khugepaged_race -d 5 -m stepped > + > +CATEGORY="thp" run_test ./khugepaged_race -d 5 -m free > + > +CATEGORY="thp" run_test ./khugepaged_race -d 5 -m madvise
Please set the default duration so it will be 5 seconds for each mode and make ./khugepaged_race run all the modes by default. -- Sincerely yours, Mike.

