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 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
Alternatives that seem to work:
1) pass the absolute path to M=:
make O=build64 W=1 M=$PWD/drivers/gpu/drm/xe/
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.
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
>
>
On Fri, Jun 7, 2024 at 2:02 AM Lucas De Marchi <[email protected]> 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