Re: ✗ CI.Hooks: failure for drm/xe/irq: remove xe_irq_shutdown

From: Masahiro Yamada
Date: Thu Jun 06 2024 - 14:34:31 EST


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