On Fri, Jun 7, 2024 at 2:02 AM Lucas De Marchi <lucas.demarchi@xxxxxxxxx> wrote: > > Cc'ing kbuild + lkml and maintainers. > > On Thu, Jun 06, 2024 at 01:17:00PM GMT, Patchwork wrote: > >== Series Details == > > > >Series: drm/xe/irq: remove xe_irq_shutdown > >URL : https://patchwork.freedesktop.org/series/134565/ > >State : failure > > > >== Summary == > > > >run-parts: executing /workspace/ci/hooks/00-showenv > >+ export > >+ grep -Ei '(^|\W)CI_' > >declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default" > >declare -x CI_KERNEL_SRC_DIR="/workspace/kernel" > >declare -x CI_TOOLS_SRC_DIR="/workspace/ci" > >declare -x CI_WORKSPACE_DIR="/workspace" > >run-parts: executing /workspace/ci/hooks/10-build-W1 > >+ SRC_DIR=/workspace/kernel > >+ RESTORE_DISPLAY_CONFIG=0 > >+ '[' -n /workspace/kernel/build64-default ']' > >+ BUILD_DIR=/workspace/kernel/build64-default > >+ cd /workspace/kernel > >++ nproc > >+ make -j48 O=/workspace/kernel/build64-default modules_prepare > >make[1]: Entering directory '/workspace/kernel/build64-default' > > GEN Makefile > > UPD include/generated/compile.h > > UPD include/config/kernel.release > >mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool > > UPD include/generated/utsrelease.h > > HOSTCC /workspace/kernel/build64-default/tools/objtool/fixdep.o > > CALL ../scripts/checksyscalls.sh > > HOSTLD /workspace/kernel/build64-default/tools/objtool/fixdep-in.o > > LINK /workspace/kernel/build64-default/tools/objtool/fixdep > > INSTALL libsubcmd_headers > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o > > CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o > > LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o > > AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a > > CC /workspace/kernel/build64-default/tools/objtool/weak.o > > CC /workspace/kernel/build64-default/tools/objtool/check.o > > CC /workspace/kernel/build64-default/tools/objtool/special.o > > CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o > > CC /workspace/kernel/build64-default/tools/objtool/elf.o > > CC /workspace/kernel/build64-default/tools/objtool/objtool.o > > CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o > > CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o > > CC /workspace/kernel/build64-default/tools/objtool/libstring.o > > CC /workspace/kernel/build64-default/tools/objtool/libctype.o > > CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o > > CC /workspace/kernel/build64-default/tools/objtool/librbtree.o > > CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o > > CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o > > CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o > > LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o > > LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o > > LINK /workspace/kernel/build64-default/tools/objtool/objtool > >make[1]: Leaving directory '/workspace/kernel/build64-default' > >++ nproc > >+ make -j48 O=/workspace/kernel/build64-default M=drivers/gpu/drm/xe W=1 > >make[1]: Entering directory '/workspace/kernel/build64-default' > >../scripts/Makefile.build:41: drivers/gpu/drm/xe/Makefile: No such file or directory This is because b1992c3772e6 stopped adding VPATH for external module builds. You can manually add it, though. $ make -j48 O=/workspace/kernel/build64-default M=drivers/gpu/drm/xe W=1 VPATH=$(pwd) will work like before. > > This started happening since commit b1992c3772e6 ("kbuild: use $(src) > instead of $(srctree)/$(src) for source directory"). For context: after > building the entire kernel our CI tries to build just the xe module with > additional CFLAGS... in this case by passing W=1. > > Trying to build just xe.ko by path doesn't work: > > make O=build64 W=1 drivers/gpu/drm/xe/xe.ko > > WARNING: modpost: missing MODULE_DESCRIPTION() in vmlinux.o > ERROR: modpost: "ttm_bo_vm_dummy_page" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_mode_is_420_also" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_dp_downstream_max_dotclock" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_dp_mst_topology_mgr_set_mst" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_atomic_state_init" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_atomic_set_fb_for_plane" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_dp_remove_payload_part2" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_dp_channel_eq_ok" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_dp_downstream_debug" [drivers/gpu/drm/xe/xe.ko] undefined! > ERROR: modpost: "drm_modeset_lock_all_ctx" [drivers/gpu/drm/xe/xe.ko] undefined! > WARNING: modpost: suppressed 507 unresolved symbol warnings because there were too many) > make[3]: *** [../scripts/Makefile.modpost:145: Module.symvers] Error 1 > make[2]: *** [/home/lucas/p/linux-dim/src/Makefile:1916: single_modules] Error 2 > make[1]: *** [/home/lucas/p/linux-dim/src/Makefile:240: __sub-make] Error 2 > make[1]: Leaving directory '/home/lucas/p/linux-dim/src/build64' > make: *** [Makefile:240: __sub-make] Error 2 If you build a single module, modpost cannot resolve references to other modules. KBUILD_MODPOST_WARN=1 turns the errors into warnings, though. $ make O=/tmp/abc drivers/gpu/drm/xe/xe.ko KBUILD_MODPOST_WARN=1 > Alternatives that seem to work: > > 1) pass the absolute path to M=: > > make O=build64 W=1 M=$PWD/drivers/gpu/drm/xe/ This is a simpler solution than VPATH=$(pwd) > > 2) just pass the directory: > > make O=build64 W=1 drivers/gpu/drm/xe/ > > I think we avoided (2) due to it not working if we were building commit > by commit and something touched things outside xe. But for this current > use case it seems it's the more correct approach since Makefile says: > > # Use make M=dir or set the environment variable KBUILD_EXTMOD to specify the > # directory of external module to build. Setting M= takes precedence. I agree. If you are only interested in extra compiler warnings, you do not need to link the final *.ko file. > > Lucas De Marchi > > >make[3]: *** No rule to make target 'drivers/gpu/drm/xe/Makefile'. Stop. > >make[2]: *** [/workspace/kernel/Makefile:1934: drivers/gpu/drm/xe] Error 2 > >make[1]: Leaving directory '/workspace/kernel/build64-default' > >make[1]: *** [/workspace/kernel/Makefile:240: __sub-make] Error 2 > >make: *** [Makefile:240: __sub-make] Error 2 > >run-parts: /workspace/ci/hooks/10-build-W1 exited with return code 2 > > > > -- Best Regards Masahiro Yamada