On Sat, Sep 26, 2026 at 10:08:18AM +0900, Hajime Tazaki wrote: > Architectures lacks MMU doesn't support fork(2) syscall and only > vfork(2) is available with limitations. Thus, we cannot run kselftest > on nommu architecture as is. > > This commit addresses this issue with the following changes: > > - on test run stage, avoid calling timeout command when NOMMU=1 variable > added to environmental variable, since timeout command uses fork > syscall which nommu platform doesn't support. > - describe the difference of nommu tests in the document. > > So command line to build/execute tests for nommu should be like below: > > $ make ARCH=um NOMMU=1 O=build kselftest-all TARGETS=nommu > $ make ARCH=um NOMMU=1 O=build kselftest-install TARGETS=nommu > $ NOMMU=1 ./build/kselftest/kselftest_install/run_kselftest.sh -p \ > -c nommu > > Cc: Shuah Khan <[email protected]> > Cc: Jonathan Corbet <[email protected]> > Cc: Kees Cook <[email protected]> > Cc: Andy Lutomirski <[email protected]> > Cc: Will Drewry <[email protected]> > Cc: Mark Brown <[email protected]> > Cc: Brendan Jackman <[email protected]> > Cc: Hangbin Liu <[email protected]> > Cc: "Ricardo B. Marliere" <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Closes: > https://sashiko.dev/#/patchset/20260813063401.1786548-1-thehajime%40gmail.com > Signed-off-by: Hajime Tazaki <[email protected]>
LGTM so: Reviewed-by: Lorenzo Stoakes (ARM) <[email protected]> > > -- > > v2 => v3 > - remove unnecessary modification > - new target is moved from TARGETS=mm/nommu to TARGETS=nommu > - rename CONFIG_NOMMU to NOMMU to avoid confusion to kernel config > > rfc => v2 > - reformat ktap header, reported by Sashiko review > - > https://lore.kernel.org/linux-mm/[email protected]/ > > rfc: > https://lore.kernel.org/linux-mm/[email protected]/ > --- > Documentation/dev-tools/kselftest.rst | 14 ++++++++++++++ > tools/testing/selftests/kselftest/runner.sh | 6 +++++- > 2 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/Documentation/dev-tools/kselftest.rst > b/Documentation/dev-tools/kselftest.rst > index 64c0ec7428a2..c35b819947b7 100644 > --- a/Documentation/dev-tools/kselftest.rst > +++ b/Documentation/dev-tools/kselftest.rst > @@ -230,6 +230,20 @@ section:: > > .. _tar's auto-compress: > https://www.gnu.org/software/tar/manual/html_node/gzip.html#auto_002dcompress > > +Build and test on nommu target > +============================== > + > +If you (cross-)build kselftests for nommu targets, or run tests on nommu > targets, use > +``NOMMU=1`` as a make variable/environment setting to tell build system to > do the additional > +checks. These nommu targets may differ in several ways, such as not > supporting fork(2) or > +using musl or another libc. Set this variable to apply the necessary build > and test adjustments. > + > +:: > + > + $ make ARCH=um NOMMU=1 O=build kselftest-all TARGETS=nommu # <= build-only > + $ make ARCH=um NOMMU=1 O=build kselftest-install TARGETS=nommu > + $ NOMMU=1 ./build/kselftest/kselftest_install/run_kselftest.sh -p -c nommu > + > Contributing new tests > ====================== > > diff --git a/tools/testing/selftests/kselftest/runner.sh > b/tools/testing/selftests/kselftest/runner.sh > index 8fc1018d6fec..95b5ebb8bbb9 100644 > --- a/tools/testing/selftests/kselftest/runner.sh > +++ b/tools/testing/selftests/kselftest/runner.sh > @@ -38,8 +38,12 @@ tap_prefix() > > tap_timeout() > { > + # nommu doesn't support timeout command (missing fork(2)) > + if [ "$NOMMU" = "1" ] ; then > + echo "timeout isn't supported for NOMMU" > + $1 > # Make sure tests will time out if utility is available. > - if [ -x /usr/bin/timeout ] ; then > + elif [ -x /usr/bin/timeout ] ; then > /usr/bin/timeout --foreground "$kselftest_timeout" \ > /usr/bin/timeout "$kselftest_timeout" $1 > else > -- > 2.43.0 > -- Cheers, Lorenzo
