On Fri, 5 Jan 2024 07:54:19 -0800 Breno Leitao leitao@debian.org wrote:
This test stresses the race between of madvise(DONTNEED), a page fault and a parallel huge page mmap, which should fail due to lack of available page available for mapping.
This test case must run on a system with one and only one huge page available.
# echo 1 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
Can't the test framework perform this configuration prior to running the test?
During setup, the test allocates the only available page, and starts three threads:
- thread 1:
- madvise(MADV_DONTNEED) on the allocated huge page
- thread 2:
- Write to the allocated huge page
- thread 3:
- Tries to allocated (steal) an extra huge page (which is not available)
thread 3 should never succeed in the allocation, since the only huge page was never unmapped, and should be reserved.
Touching the old page after thread3 allocation will raise a SIGBUS.
It's a bit strange to merge a selftest which is expected to fail because of a known but unfixed kernel bug. But I'll toss the test in there anyway, as we deserve to get bug reports ;)