* tools/testing/selftests
@ 2026-03-27 21:32 Andrew Morton
2026-03-28 2:12 ` tools/testing/selftests Li Wang
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Morton @ 2026-03-27 21:32 UTC (permalink / raw)
To: linux-kbuild, linux-kselftest
whinges, perrmanits, maybe I'm doing it wrong, etc.
a)
At the top-level, neither `make mrproper' nor `make clean' remove the
executables from tools/testing/selftests/mm/. Seems wrong?
b)
Shouldn't I be able to run
make selftests
from the top level?
c)
tools/testing/selftests/mm
make clean
make
does:
CC droppable
CC guard-regions
CC merge
CC rmap
CC soft-dirty
gcc -Wall -O2 -I /usr/src/25/tools/testing/selftests/../../.. -isystem /usr/src/25/tools/testing/selftests/../../../usr/include -isystem /usr/src/25/tools/testing/selftests/../../../tools/include/uapi -Wunreachable-code -U_FORTIFY_SOURCE -no-pie -D_GNU_SOURCE= -I/usr/src/25/tools/testing/selftests/../../../tools/testing/selftests -m32 -mxsave protection_keys.c vm_util.c thp_settings.c pkey_util.c -lrt -lpthread -lm -lrt -ldl -lm -o /usr/src/25/tools/testing/selftests/mm/protection_keys_32
gcc -Wall -O2 -I /usr/src/25/tools/testing/selftests/../../.. -isystem /usr/src/25/tools/testing/selftests/../../../usr/include -isystem /usr/src/25/tools/testing/selftests/../../../tools/include/uapi -Wunreachable-code -U_FORTIFY_SOURCE -no-pie -D_GNU_SOURCE= -I/usr/src/25/tools/testing/selftests/../../../tools/testing/selftests -m32 -mxsave pkey_sighandler_tests.c vm_util.c thp_settings.c pkey_util.c -lrt -lpthread -lm -lrt -ldl -lm -o /usr/src/25/tools/testing/selftests/mm/pkey_sighandler_tests_32
why did it start emitting the gcc command lines?
d) within tools/testing/selftests/mm:
make clean
make -j100
compiles 3-4 things then ends.
A subsequent `make -j1' compiles nothing.
Whereas
make clean
make -j1
compiles everything. Slowly.
Thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: tools/testing/selftests
2026-03-27 21:32 tools/testing/selftests Andrew Morton
@ 2026-03-28 2:12 ` Li Wang
2026-03-28 4:09 ` tools/testing/selftests Andrew Morton
[not found] ` <20260328135650.435b415f8c00835b2fa471e0@linux-foundation.org>
0 siblings, 2 replies; 6+ messages in thread
From: Li Wang @ 2026-03-28 2:12 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kbuild, linux-kselftest
On Fri, Mar 27, 2026 at 02:32:34PM -0700, Andrew Morton wrote:
>
> whinges, perrmanits, maybe I'm doing it wrong, etc.
>
> a)
>
> At the top-level, neither `make mrproper' nor `make clean' remove the
> executables from tools/testing/selftests/mm/. Seems wrong?
>
> b)
>
> Shouldn't I be able to run
>
> make selftests
>
> from the top level?
Should use:
make kselftest
make kselftest-clean
>
> c)
>
> tools/testing/selftests/mm
> make clean
> make
>
> does:
>
> CC droppable
> CC guard-regions
> CC merge
> CC rmap
> CC soft-dirty
> gcc -Wall -O2 -I /usr/src/25/tools/testing/selftests/../../.. -isystem /usr/src/25/tools/testing/selftests/../../../usr/include -isystem /usr/src/25/tools/testing/selftests/../../../tools/include/uapi -Wunreachable-code -U_FORTIFY_SOURCE -no-pie -D_GNU_SOURCE= -I/usr/src/25/tools/testing/selftests/../../../tools/testing/selftests -m32 -mxsave protection_keys.c vm_util.c thp_settings.c pkey_util.c -lrt -lpthread -lm -lrt -ldl -lm -o /usr/src/25/tools/testing/selftests/mm/protection_keys_32
> gcc -Wall -O2 -I /usr/src/25/tools/testing/selftests/../../.. -isystem /usr/src/25/tools/testing/selftests/../../../usr/include -isystem /usr/src/25/tools/testing/selftests/../../../tools/include/uapi -Wunreachable-code -U_FORTIFY_SOURCE -no-pie -D_GNU_SOURCE= -I/usr/src/25/tools/testing/selftests/../../../tools/testing/selftests -m32 -mxsave pkey_sighandler_tests.c vm_util.c thp_settings.c pkey_util.c -lrt -lpthread -lm -lrt -ldl -lm -o /usr/src/25/tools/testing/selftests/mm/pkey_sighandler_tests_32
>
> why did it start emitting the gcc command lines?
Those two binaries (*_32 / *_64) are built by custom rules in mm/Makefile.
(Makefile: line #218, #226).
Other tests use shared rules from ../lib.mk, which are quieter (they hide
full commands and show short CC ... lines).
Maybe we need:
--- a/tools/testing/selftests/mm/Makefile
+++ b/tools/testing/selftests/mm/Makefile
@@ -215,7 +215,8 @@ ifeq ($(CAN_BUILD_I386),1)
$(BINARIES_32): CFLAGS += -m32 -mxsave
$(BINARIES_32): LDLIBS += -lrt -ldl -lm
$(BINARIES_32): $(OUTPUT)/%_32: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
+ $(call msg,CC,,$@)
+ $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
$(foreach t,$(VMTARGETS),$(eval $(call gen-target-rule-32,$(t))))
endif
@@ -223,7 +224,8 @@ ifeq ($(CAN_BUILD_X86_64),1)
$(BINARIES_64): CFLAGS += -m64 -mxsave
$(BINARIES_64): LDLIBS += -lrt -ldl
$(BINARIES_64): $(OUTPUT)/%_64: %.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
+ $(call msg,CC,,$@)
+ $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
$(foreach t,$(VMTARGETS),$(eval $(call gen-target-rule-64,$(t))))
endif
> d) within tools/testing/selftests/mm:
>
> make clean
> make -j100
>
> compiles 3-4 things then ends.
>
> A subsequent `make -j1' compiles nothing.
Sorry, I wan't able to reproduce it.
Did you mean -j100 only build few source file but not the whole?
> Whereas
>
> make clean
> make -j1
>
> compiles everything. Slowly.
Both -j100 and -j1 works well from my test (vm: rhel-9.7, x86_64, gcc-11.5.0)
--
Regards,
Li Wang
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: tools/testing/selftests
2026-03-28 2:12 ` tools/testing/selftests Li Wang
@ 2026-03-28 4:09 ` Andrew Morton
2026-03-29 9:29 ` tools/testing/selftests Li Wang
[not found] ` <20260328135650.435b415f8c00835b2fa471e0@linux-foundation.org>
1 sibling, 1 reply; 6+ messages in thread
From: Andrew Morton @ 2026-03-28 4:09 UTC (permalink / raw)
To: Li Wang; +Cc: linux-kbuild, linux-kselftest
On Sat, 28 Mar 2026 10:12:06 +0800 Li Wang <liwang@redhat.com> wrote:
> On Fri, Mar 27, 2026 at 02:32:34PM -0700, Andrew Morton wrote:
> >
> > whinges, perrmanits, maybe I'm doing it wrong, etc.
> >
> > a)
> >
> > At the top-level, neither `make mrproper' nor `make clean' remove the
> > executables from tools/testing/selftests/mm/. Seems wrong?
> >
> > b)
> >
> > Shouldn't I be able to run
> >
> > make selftests
> >
> > from the top level?
>
> Should use:
>
> make kselftest
> make kselftest-clean
Thanks.
> Those two binaries (*_32 / *_64) are built by custom rules in mm/Makefile.
> (Makefile: line #218, #226).
>
> Other tests use shared rules from ../lib.mk, which are quieter (they hide
> full commands and show short CC ... lines).
>
> Maybe we need:
>
> --- a/tools/testing/selftests/mm/Makefile
> +++ b/tools/testing/selftests/mm/Makefile
> @@ -215,7 +215,8 @@ ifeq ($(CAN_BUILD_I386),1)
> $(BINARIES_32): CFLAGS += -m32 -mxsave
> $(BINARIES_32): LDLIBS += -lrt -ldl -lm
> $(BINARIES_32): $(OUTPUT)/%_32: %.c
> - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
> + $(call msg,CC,,$@)
> + $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
> $(foreach t,$(VMTARGETS),$(eval $(call gen-target-rule-32,$(t))))
> endif
>
> @@ -223,7 +224,8 @@ ifeq ($(CAN_BUILD_X86_64),1)
> $(BINARIES_64): CFLAGS += -m64 -mxsave
> $(BINARIES_64): LDLIBS += -lrt -ldl
> $(BINARIES_64): $(OUTPUT)/%_64: %.c
> - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
> + $(call msg,CC,,$@)
> + $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@
> $(foreach t,$(VMTARGETS),$(eval $(call gen-target-rule-64,$(t))))
> endif
OK, minor thing of course.
> > d) within tools/testing/selftests/mm:
> >
> > make clean
> > make -j100
> >
> > compiles 3-4 things then ends.
> >
> > A subsequent `make -j1' compiles nothing.
>
> Sorry, I wan't able to reproduce it.
> Did you mean -j100 only build few source file but not the whole?
Yes.
On my 128 core machine everything up to -j50 works. -j51 and higher do
this.
Another (32 core) machine runs -j100 successfully.
Weird.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: tools/testing/selftests
[not found] ` <20260328135650.435b415f8c00835b2fa471e0@linux-foundation.org>
@ 2026-03-28 21:03 ` Andrew Morton
2026-03-29 10:04 ` tools/testing/selftests Li Wang
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Morton @ 2026-03-28 21:03 UTC (permalink / raw)
To: Li Wang, linux-kbuild, linux-kselftest
On Sat, 28 Mar 2026 13:56:50 -0700 Andrew Morton <akpm@linux-foundation.org> wrote:
> On Sat, 28 Mar 2026 10:12:06 +0800 Li Wang <liwang@redhat.com> wrote:
>
> > > from the top level?
> >
> > Should use:
> >
> > make kselftest
>
I'm probably doing something wrong, but `make -j50 kselftest-all'
appears to have scribbled on my top-level Makefile, so now I'm getting
ts:/usr/src/25> make kselftest-all
/usr/src/25/Makefile:5: *** Too many open files. Stop.
ts:/usr/src/25> cat Makefile
# Automatically generated by /usr/src/25/Makefile: don't edit
export KBUILD_OUTPUT = .
export KBUILD_EXTMOD = /usr/src/25
export KBUILD_EXTMOD_OUTPUT = /usr/src/25
include /usr/src/25/Makefile
I've done this twice in succession now. Any suggestions where I should
look?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: tools/testing/selftests
2026-03-28 4:09 ` tools/testing/selftests Andrew Morton
@ 2026-03-29 9:29 ` Li Wang
0 siblings, 0 replies; 6+ messages in thread
From: Li Wang @ 2026-03-29 9:29 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kbuild, linux-kselftest
> > > d) within tools/testing/selftests/mm:
> > >
> > > make clean
> > > make -j100
> > >
> > > compiles 3-4 things then ends.
> > >
> > > A subsequent `make -j1' compiles nothing.
> >
> > Sorry, I wan't able to reproduce it.
> > Did you mean -j100 only build few source file but not the whole?
>
> Yes.
>
> On my 128 core machine everything up to -j50 works. -j51 and higher do
> this.
Could it be caused by line#262 of selftests/mm/Makefile:
local_config.mk local_config.h: check_config.sh
CC="$(CC)" CFLAGS="$(CFLAGS)" ./check_config.sh
check_config.sh generates two files: local_config.mk and local_config.h.
Makefile lets parallel make -j100 hit a timing race around that shared
generation step. local_config.mk is also included, so if it’s being
regenerated at the wrong moment, make may parse incomplete state and
build only part of targets.
Try this patch on your 128 core system:
--- a/tools/testing/selftests/mm/Makefile
+++ b/tools/testing/selftests/mm/Makefile
@@ -259,10 +259,13 @@ $(OUTPUT)/migration: LDLIBS += -lnuma
$(OUTPUT)/rmap: LDLIBS += -lnuma
-local_config.mk local_config.h: check_config.sh
+local_config.stamp: check_config.sh
CC="$(CC)" CFLAGS="$(CFLAGS)" ./check_config.sh
-EXTRA_CLEAN += local_config.mk local_config.h
+local_config.mk local_config.h: local_config.stamp
+
+EXTRA_CLEAN += local_config.mk local_config.h local_config.stamp
ifeq ($(IOURING_EXTRA_LIBS),)
all: warn_missing_liburing
--
Regards,
Li Wang
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: tools/testing/selftests
2026-03-28 21:03 ` tools/testing/selftests Andrew Morton
@ 2026-03-29 10:04 ` Li Wang
0 siblings, 0 replies; 6+ messages in thread
From: Li Wang @ 2026-03-29 10:04 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kbuild, linux-kselftest
On Sat, Mar 28, 2026 at 02:03:11PM -0700, Andrew Morton wrote:
> On Sat, 28 Mar 2026 13:56:50 -0700 Andrew Morton <akpm@linux-foundation.org> wrote:
>
> > On Sat, 28 Mar 2026 10:12:06 +0800 Li Wang <liwang@redhat.com> wrote:
> >
> > > > from the top level?
> > >
> > > Should use:
> > >
> > > make kselftest
> >
>
> I'm probably doing something wrong, but `make -j50 kselftest-all'
> appears to have scribbled on my top-level Makefile, so now I'm getting
>
> ts:/usr/src/25> make kselftest-all
> /usr/src/25/Makefile:5: *** Too many open files. Stop.
>
> ts:/usr/src/25> cat Makefile
> # Automatically generated by /usr/src/25/Makefile: don't edit
> export KBUILD_OUTPUT = .
> export KBUILD_EXTMOD = /usr/src/25
> export KBUILD_EXTMOD_OUTPUT = /usr/src/25
> include /usr/src/25/Makefile
>
> I've done this twice in succession now. Any suggestions where I should
> look?
When build selftests from the top-level, sub-makes entered via `-C` may
still inherit the caller's PWD from the environment.
Some selftests use $(PWD) in recursive kbuild invocations, which can
then incorrectly resolve to the kernel top directory instead of the
current test directory.
Maybe try export PWD in the ../selftests/lib.mk?
export PWD := $(CURDIR)
--
Regards,
Li Wang
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-03-29 10:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-27 21:32 tools/testing/selftests Andrew Morton
2026-03-28 2:12 ` tools/testing/selftests Li Wang
2026-03-28 4:09 ` tools/testing/selftests Andrew Morton
2026-03-29 9:29 ` tools/testing/selftests Li Wang
[not found] ` <20260328135650.435b415f8c00835b2fa471e0@linux-foundation.org>
2026-03-28 21:03 ` tools/testing/selftests Andrew Morton
2026-03-29 10:04 ` tools/testing/selftests Li Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox