On Tue, 2024-01-30 at 07:08 +0800, kernel test robot wrote: > tree: > https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git m > aster > head: 596764183be8ebb13352b281a442a1f1151c9b06 > commit: c4bbe83d27c2446a033cc0381c3fb6be5e8c41c7 [1016/2825] > livepatch: Move tests from lib/livepatch to selftests/livepatch > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 > reproduce (this is a W=1 build): > (https://download.01.org/0day-ci/archive/20240130/202401300736.GkSZoS > rA-lkp@xxxxxxxxx/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new > version of > the same patch/commit), kindly add following tags > > Reported-by: kernel test robot <lkp@xxxxxxxxx> > > Closes: > > https://lore.kernel.org/oe-kbuild-all/202401300736.GkSZoSrA-lkp@xxxxxxxxx/ > > All errors (new ones prefixed by >>): > > > > make[2]: *** kselftest/livepatch/test_modules: No such file or > > > directory. Stop. > I had problems to compile the bpf tests, usually resulting in errors like this: $ make W=1 O=/tmp/kselftest -C tools/testing/selftests/bpf make: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests/bpf' CLNG-BPF [test_maps] connect_unix_prog.bpf.o progs/connect_unix_prog.c:28:15: error: no member named 'uaddrlen' in 'struct bpf_sock_addr_kern' if (sa_kern->uaddrlen != unaddrlen) ~~~~~~~ ^ 1 error generated. make: *** [Makefile:619: /tmp/kselftest//connect_unix_prog.bpf.o] Error 1 But, if I simply feed the livepatch selftests as target I'm able to trigger the problem: $ make W=1 O=/tmp/kselftest -C tools/testing/selftests/ TARGETS=livepatch make: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests' make[1]: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch' make -C /tmp/kselftest/kselftest/livepatch/test_modules make[2]: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch' make[2]: *** /tmp/kselftest/kselftest/livepatch/test_modules: No such file or directory. Stop. make[2]: Leaving directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch' make[1]: *** [../lib.mk:92: gen_mods_dir] Error 2 make[1]: Leaving directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch' make: *** [Makefile:180: all] Error 2 make: Leaving directory '/home/mpdesouza/git/linux/tools/testing/selftests' When looking at the lib.mk, I just followed the other variables and did the same: TEST_GEN_MODS_DIR := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_MODS_DIR)) But later on, I jump into $(TEST_GEN_MODS_DIR), which is invalid because of the O= that is used a prefix for the path: /tmp/kselftest/kselftest/livepatch/test_modules. My first idea was to just remove the patsubst and take TEST_GEN_MODS_DIR, which should be livepatch/test_modules in this case, but it then returns another problem: make: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests' make[1]: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch' make -C test_modules make[2]: Entering directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch/test_modul es' make -C /lib/modules/6.5.9-1-default/build modules KBUILD_EXTMOD=/home/mpdesouza/git/linux/tools/testing/selftests/livepat ch/test_modules make[3]: Entering directory '/usr/src/linux-6.5.9-1-obj/x86_64/default' make[4]: Entering directory '/tmp/kselftest' /usr/src/linux-6.5.9-1/Makefile:754: include/config/auto.conf: No such file or directory make[4]: *** [/usr/src/linux-6.5.9-1/Makefile:234: __sub-make] Error 2 make[4]: Leaving directory '/tmp/kselftest' make[3]: *** [../../../linux-6.5.9-1/Makefile:234: __sub-make] Error 2 make[3]: Leaving directory '/usr/src/linux-6.5.9-1-obj/x86_64/default' make[2]: *** [Makefile:16: modules] Error 2 make[2]: Leaving directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch/test_modul es' make[1]: *** [../lib.mk:92: gen_mods_dir] Error 2 make[1]: Leaving directory '/home/mpdesouza/git/linux/tools/testing/selftests/livepatch' make: *** [Makefile:180: all] Error 2 make: Leaving directory '/home/mpdesouza/git/linux/tools/testing/selftests' Joe, Petr, Shuah, Any ideas? I don't understand why we have that make[4]: Entering directory '/tmp/kselftest' I would expected that Kbuild would just spill the resulting module and object files into the O= dir, instead of "jumping there". What am I missing? Thanks in advance for the help, Marcos