Re: [PATCH v1 1/1] delay: Replace kernel.h with the necessary inclusions

From: Guenter Roeck
Date: Thu Oct 28 2021 - 13:06:19 EST


On 10/28/21 9:50 AM, Andy Shevchenko wrote:
On Thu, Oct 28, 2021 at 09:28:10AM -0700, Guenter Roeck wrote:
On Thu, Oct 28, 2021 at 06:58:13PM +0300, Andy Shevchenko wrote:
On Thu, Oct 28, 2021 at 08:30:55AM -0700, Guenter Roeck wrote:
On Wed, Oct 27, 2021 at 06:03:24PM +0300, Andy Shevchenko wrote:
When kernel.h is used in the headers it adds a lot into dependency hell,
especially when there are circular dependencies are involved.

Replace kernel.h inclusion with the list of what is really being used.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

In next-20211028:

Building riscv32:defconfig ... failed
--------------
Error log:
arch/riscv/lib/delay.c: In function '__delay':
arch/riscv/lib/delay.c:77:17: error: implicit declaration of function 'cpu_relax'

Building riscv:defconfig ... failed
--------------
Error log:
arch/riscv/lib/delay.c: In function '__delay':
arch/riscv/lib/delay.c:77:17: error: implicit declaration of function 'cpu_relax'

Building s390:defconfig ... failed
--------------
Error log:
<stdin>:1559:2: warning: #warning syscall futex_waitv not implemented [-Wcpp]
In file included from arch/s390/pci/pci_insn.c:12:
arch/s390/include/asm/facility.h: In function '__stfle':
arch/s390/include/asm/facility.h:98:22: error: implicit declaration of function 'min_t'

bisect to this patch. Probably more, but it is difficult to find out
since -next is too badly broken and has build failures all over the place.

Thanks for the report!

I'll send the fix for above soon. Hope it will reduce amount of failures.

I have run it on x86_64 with `kcbench -m ...` and no failures.

Can you share all build errors you found so far? I believe none of them related
to x86* code.

Above just revealed the problematic places in the first place. Why the
programmers rely on delay.h to include full bloated header pile?! (Yeah, this
is rhetorical, so please share the errors, I'll try to address them)

The ones listed above are the ones I was able to identify. As I said, there
are so many compile and runtime failures in linux-next that it is difficult
to track down individual failures.

Yeah, for example, I looked into this: https://kerneltests.org/builders/next-mips-next/builds/698/steps/buildcommand/logs/stdio

I can't see how my patch is related to this...


The missing errno.h in that log is due to missing dependencies in the
fanotify patch - it causes build failures whenever a toolchain without
C library support is used to build the kernel. I already reported this.

The unused variable error bisects to 'irq: mips: simplify do_domain_IRQ()'.
I'll send a report as response to that patch in a minute.

It all adds up ... there seem to be a lot of last minute changes in -next.

Guenter

Just to give you an idea (this is for
next-20211028):

Build results:
total: 153 pass: 115 fail: 38
Failed builds:
alpha:allmodconfig
arm:allmodconfig
arm:omap2plus_defconfig
arm:davinci_all_defconfig
arm64:defconfig
arm64:allmodconfig
csky:allmodconfig
h8300:allnoconfig
h8300:tinyconfig
h8300:edosk2674_defconfig
h8300:h8300h-sim_defconfig
h8300:h8s-sim_defconfig
m68k:allmodconfig
mips:defconfig
mips:allmodconfig
mips:allnoconfig
mips:tinyconfig
mips:bcm47xx_defconfig
mips:bcm63xx_defconfig
mips:ath79_defconfig
mips:ar7_defconfig
mips:e55_defconfig
mips:cavium_octeon_defconfig
mips:malta_defconfig
mips:rt305x_defconfig
nds32:allmodconfig
parisc:allmodconfig
parisc:generic-32bit_defconfig
parisc64:generic-64bit_defconfig
powerpc:allmodconfig
riscv32:defconfig
riscv32:allmodconfig
riscv:defconfig
riscv:allmodconfig
s390:defconfig
s390:allmodconfig
sparc64:allmodconfig
xtensa:allmodconfig
Qemu test results:
total: 480 pass: 315 fail: 165
Failed tests:
<too many to list them all>

Build and boot logs are as always at https://kerneltests.org/builders
in the 'next' column in case you want to do some digging yourself.