> > > 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


Reply via email to