asm-generic: partially revert "Unify uapi bitsperlong.h for arm64, riscv and loongarch"
authorArnd Bergmann <arnd@arndb.de>
Fri, 11 Aug 2023 20:36:58 +0000 (22:36 +0200)
committerArnd Bergmann <arnd@arndb.de>
Thu, 17 Aug 2023 12:51:20 +0000 (14:51 +0200)
commit6e8d96909a23c8078ee965bd48bb31cbef2de943
tree52bdad53d81bead8a20cb4592a49a7606ab4e623
parent4dd595c34c4bb22c16a76206a18c13e4e194335d
asm-generic: partially revert "Unify uapi bitsperlong.h for arm64, riscv and loongarch"

Unifying the asm-generic headers across 32-bit and 64-bit architectures
based on the compiler provided macros was a good idea and appears to work
with all user space, but it caused a regression when building old kernels
on systems that have the new headers installed in /usr/include, as this
combination trips an inconsistency in the kernel's own tools/include
headers that are a mix of userspace and kernel-internal headers.

This affects kernel builds on arm64, riscv64 and loongarch64 systems that
might end up using the "#define __BITS_PER_LONG 32" default from the old
tools headers. Backporting the commit into stable kernels would address
this, but it would still break building kernels without that backport,
and waste time for developers trying to understand the problem.

arm64 build machines are rather common, and on riscv64 this can also
happen in practice, but loongarch64 is probably new enough to not
be used much for building old kernels, so only revert the bits
for arm64 and riscv.

Link: https://lore.kernel.org/all/20230731160402.GB1823389@dev-arch.thelio-3990X/
Reported-by: Nathan Chancellor <nathan@kernel.org>
Fixes: 8386f58f8deda ("asm-generic: Unify uapi bitsperlong.h for arm64, riscv and loongarch")
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm64/include/uapi/asm/bitsperlong.h [new file with mode: 0644]
arch/riscv/include/uapi/asm/bitsperlong.h [new file with mode: 0644]
tools/arch/arm64/include/uapi/asm/bitsperlong.h [new file with mode: 0644]
tools/arch/riscv/include/uapi/asm/bitsperlong.h [new file with mode: 0644]