On 8/25/26 03:59, Hajime Tazaki wrote:
> We add an ability to execute kselftest on nommu platforms.
>
> Currently there are several issues if we wish to run kselftests on nommu
> targets:
>
> - it cannot compile/build test binaries because the current files mainly
> assume to build with glibc,
> - some of the tests are not able to run on nommu targets as there are no
> fork(2) syscall.
>
> The first issue can be avoided if we can build static PIE binaries (if
> targets support it), but in our case (build on ubuntu/glibc and run on
> alpine/musl-libc), it fails to invoke due to lack of the GNU ifunc
> mechanism. Thus, we need to cross-compile with musl toolchain, which
> needs to be solved the first issue.
>
> The second issue is the lack of fork(2) syscall on those platforms.
> Especially the test harness helper (kselftest_harness.h) uses the
> syscall, which cannot be simply with vfork(2). `timeout` command used
> in `runner.sh` never works for nommu platform as it uses fork(2).
>
> nommu component in the mm subsystem has several known issues and having
> test cases should help this situation, thus this patchset is very first
> step toward enriching test environment which has not been well tested
> for a while. The test cases is implemented based on the document
> (Documentation/admin-guide/mm/nommu-mmap.rst).
>
> So, for the first step, nommu targets only support low-level API of
> kselftests (kselftest.h), and implement tests in a new target,
> TARGETS=mm/nommu. Other targets are currently not even able to build
> due to toolchain issues but will be addressed once the initial
> introduction which mainly focuses on nommu test will be settled.
>
> The patch was initially combined with other patches but is decoupled to
> only focus on test framework and testcases.
>
> - rfc:
> https://lore.kernel.org/linux-mm/[email protected]/
>
> Hajime Tazaki (2):
> selftests: run tests on nommu architecture
> selftests/mm: add nommu mmap and mremap behavior tests
>
> Documentation/dev-tools/kselftest.rst | 14 +
> tools/testing/selftests/Makefile | 1 +
> tools/testing/selftests/kselftest/runner.sh | 9 +-
> tools/testing/selftests/kselftest_harness.h | 4 +
> tools/testing/selftests/lib.mk | 8 +
> tools/testing/selftests/mm/nommu/Makefile | 7 +
> .../selftests/mm/nommu/nommu_mmap_test.c | 265 +++++++++++++
> .../selftests/mm/nommu/nommu_mremap_test.c | 353 ++++++++++++++++++
That's odd.
tools/testing/selftests/mm
itself should know which tests can be built and ran on nommu. nommu-only tests
can be placed in mm/nommu, but I would expect tools/testing/selftests/mm's
Makefile and run script to compile and run only selftests that are supported on
the given platform.
--
Cheers,
David