Re: [PATCH 0000/2297] [ANNOUNCE, RFC] "Fast Kernel Headers" Tree -v1: Eliminate the Linux kernel's "Dependency Hell"

From: Nathan Chancellor
Date: Wed Jan 05 2022 - 17:33:45 EST


On Wed, Jan 05, 2022 at 01:40:32AM +0100, Ingo Molnar wrote:
>
> * Nathan Chancellor <nathan@xxxxxxxxxx> wrote:
>
> > Unfortunately, while the kernel now builds, it does not boot in QEMU. I
> > tried to checkout at 9006a48618cc0cacd3f59ff053e6509a9af5cc18 to see if I
> > could reproduce that breakage there but the build errors out at that
> > change (I do see notes of bisection breakage in some of the commits) so I
> > assume that is expected.
>
> Yeah, there's a breakage window on ARM64, I'll track down that
> bisectability bug.
>
> Decoupling thread_info and task_struct incrementally, so that it bisects
> cleanly on all architectures, was always a big challenge. :-/
>
> > There is no output, even with earlycon, so it seems like something is
> > going wrong in early boot code. I am not very familiar with the SCS code
> > so I will see if I can debug this with gdb later (I'll try to see if it
> > is reproducible with GCC as well; as Nick mentions, there is support
> > being added to it and I don't mind building from source).
>
> Just to make sure: with SCS disabled the same kernel boots fine?

Correct (thank you for making sure, I have definitely not tested that
before...).

$ make -skj"$(nproc)" ARCH=arm64 LLVM=1 O=.build/arm64 defconfig Image.gz

$ boot-qemu.sh -a arm64 -k .build/arm64 -t 30s
...
[ 0.000000] Linux version 5.16.0-rc8-798083-g1755441e323b (nathan@archlinux-ax161) (ClangBuiltLinux clang version 14.0.0 (https://github.com/llvm/llvm-project 4602f4169a21e75b82261ba1599046b157d1d021), LLD 14.0.0) #1 SMP PREEMPT Wed Jan 5 21:51:29 UTC 2022
...

$ make -skj"$(nproc)" ARCH=arm64 LLVM=1 O=.build/arm64.scs defconfig

$ scripts/config --file .build/arm64.scs/.config -e SHADOW_CALL_STACK

$ make -skj"$(nproc)" ARCH=arm64 LLVM=1 O=.build/arm64.scs olddefconfig Image.gz
...
qemu-system-aarch64: terminating on signal 15 from pid 690472 (timeout)
+ RET=124
+ set +x

Going back to v5.16-rc8, everything works fine.

$ boot-qemu.sh -a arm64 -k .build/arm64 -t 30s
...
[ 0.000000] Linux version 5.16.0-rc8-795784-gc9e6606c7fe9 (nathan@archlinux-ax161) (ClangBuiltLinux clang version 14.0.0 (https://github.com/llvm/llvm-project 4602f4169a21e75b82261ba1599046b157d1d021), LLD 14.0.0) #1 SMP PREEMPT Wed Jan 5 22:27:39 UTC 2022
...

I don't think I will have time to look at this today but I will try
tomorrow. Having the bisectability bug fixed would help narrow things
down but I am almost certain it is something up with the new per_task
infrastructure but I'll have to dig around and see if I can understand
that first.

Cheers,
Nathan