* 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 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
[parent not found: <20260328135650.435b415f8c00835b2fa471e0@linux-foundation.org>]
* 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 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