Re: [next] riscv: Linux next-20220404 riscv defconfig builds failed.

From: Palmer Dabbelt
Date: Tue Apr 05 2022 - 21:13:54 EST


On Mon, 04 Apr 2022 22:17:24 PDT (-0700), guoren@xxxxxxxxxx wrote:
On Tue, Apr 5, 2022 at 12:57 AM Nathan Chancellor <nathan@xxxxxxxxxx> wrote:

On Mon, Apr 04, 2022 at 03:28:41PM +0530, Naresh Kamboju wrote:
> Linux next-20220404 riscv defconfig builds failed.
>
> Regressions found on riscv:
> - riscv-riscv-clang-14-defconfig
> - riscv-riscv-gcc-10-defconfig
> - riscv-riscv-clang-13-defconfig
> - riscv-riscv-clang-12-defconfig
> - riscv-riscv-clang-11-defconfig
> - riscv-riscv-gcc-11-defconfig
> - riscv-riscv-gcc-8-defconfig
> - riscv-riscv-gcc-9-defconfig
> - riscv-riscv-clang-nightly-defconfig
>
>
> arch/riscv/kernel/compat_signal.c:7:10: fatal error:
> linux/tracehook.h: No such file or directory
> 7 | #include <linux/tracehook.h>
> | ^~~~~~~~~~~~~~~~~~~
> compilation terminated.
> make[3]: *** [scripts/Makefile.build:289:
> arch/riscv/kernel/compat_signal.o] Error 1

For what it's worth, I also see:

$ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfig all
arch/riscv/kernel/compat_vdso/compat_vdso.lds.S:3:10: fatal error: ../vdso/vdso.lds.S: No such file or directory
3 | #include <../vdso/vdso.lds.S>
| ^~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [scripts/Makefile.build:462: arch/riscv/kernel/compat_vdso/compat_vdso.lds] Error 1
arch/riscv/kernel/compat_vdso/rt_sigreturn.S:3:10: fatal error: ../vdso/rt_sigreturn.S: No such file or directory
3 | #include <../vdso/rt_sigreturn.S>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
arch/riscv/kernel/compat_vdso/note.S:3:10: fatal error: ../vdso/note.S: No such file or directory
3 | #include <../vdso/note.S>
| ^~~~~~~~~~~~~~~~
compilation terminated.
arch/riscv/kernel/compat_vdso/getcpu.S:3:10: fatal error: ../vdso/getcpu.S: No such file or directory
3 | #include <../vdso/getcpu.S>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [arch/riscv/kernel/compat_vdso/Makefile:43: arch/riscv/kernel/compat_vdso/rt_sigreturn.o] Error 1
make[2]: *** [arch/riscv/kernel/compat_vdso/Makefile:43: arch/riscv/kernel/compat_vdso/note.o] Error 1
make[2]: *** [arch/riscv/kernel/compat_vdso/Makefile:43: arch/riscv/kernel/compat_vdso/getcpu.o] Error 1
arch/riscv/kernel/compat_vdso/flush_icache.S:3:10: fatal error: ../vdso/flush_icache.S: No such file or directory
3 | #include <../vdso/flush_icache.S>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [arch/riscv/kernel/compat_vdso/Makefile:43: arch/riscv/kernel/compat_vdso/flush_icache.o] Error 1

I am guessing this code was never tested with $(srctree) == $(objtree).
Thx for pointing it out:
I always use:
make -skj"$(nproc)" ARCH=riscv
CROSS_COMPILE=riscv64-unknown-linux-gnu- EXTRA_CFLAGS+=-g
O=../build-riscv/ defconfig all

When I change to:
make -skj"$(nproc)" ARCH=riscv
CROSS_COMPILE=riscv64-unknown-linux-gnu- EXTRA_CFLAGS+=-g defconfig
all

I got your problem.

Just to be clear: this one wasn't supposed to go in via the csky tree, and had other build issues that were being found by the autobuilders (which is why it hadn't gone in via the riscv tree). I do in-tree builds somewhat regularly so that probably would have caught it if nothing else did, but my guess is that some other autobuilder would have found it first (some of the earlier patches
Guo: please stop pushing things to linux-next that break the builds and/or aren't aimed at your tree. This just makes things unnecessarly complicated. If you don't want to deal with the build issues that's OK, just LMK when you send the patch sets out and I'll deal with them, but having linux-next's build break causes fallout for a lot of users.