The powerpc builds failed on Linux next-20240626 tag due to following warnings and errors with gcc-13, gcc-8 and clang-18.
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
Regressions found on powerpc:
- clang-nightly-ppc64e_defconfig - clang-18-maple_defconfig - clang-nightly-defconfig - clang-18-defconfig - gcc-13-maple_defconfig - gcc-8-cell_defconfig - gcc-8-maple_defconfig - clang-18-ppc64e_defconfig - clang-nightly-cell_defconfig - clang-nightly-maple_defconfig - gcc-8-ppc64e_defconfig - gcc-13-cell_defconfig - gcc-13-defconfig - gcc-13-ppc64e_defconfig - clang-18-cell_defconfig - gcc-8-defconfig
Build errors: ---- arch/powerpc/kernel/nvram_64.c:79:17: error: initialization of 'void (*)(struct kmsg_dumper *, enum kmsg_dump_reason, const char *)' from incompatible pointer type 'void (*)(struct kmsg_dumper *, enum kmsg_dump_reason)' [-Werror=incompatible-pointer-types] 79 | .dump = oops_to_nvram | ^~~~~~~~~~~~~ arch/powerpc/kernel/nvram_64.c:79:17: note: (near initialization for 'nvram_kmsg_dumper.dump') arch/powerpc/kernel/nvram_64.c:645:13: error: conflicting types for 'oops_to_nvram'; have 'void(struct kmsg_dumper *, enum kmsg_dump_reason, const char *)' 645 | static void oops_to_nvram(struct kmsg_dumper *dumper, | ^~~~~~~~~~~~~ arch/powerpc/kernel/nvram_64.c:75:13: note: previous declaration of 'oops_to_nvram' with type 'void(struct kmsg_dumper *, enum kmsg_dump_reason)' 75 | static void oops_to_nvram(struct kmsg_dumper *dumper, | ^~~~~~~~~~~~~ arch/powerpc/kernel/nvram_64.c:75:13: error: 'oops_to_nvram' used but never defined [-Werror] arch/powerpc/kernel/nvram_64.c:645:13: error: 'oops_to_nvram' defined but not used [-Werror=unused-function] 645 | static void oops_to_nvram(struct kmsg_dumper *dumper, | ^~~~~~~~~~~~~ cc1: all warnings being treated as errors
metadata: -- git_describe: next-20240626 git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next git_short_log: df9574a57d02 ("Add linux-next specific files for 20240626") arch: powerpc toolchain: gcc-13, gcc-8 and clang-18
Steps to reproduce: ---------
# tuxmake --runtime podman --target-arch powerpc --toolchain gcc-13 --kconfig ppc64e_defconfig
Links: -- - https://storage.tuxsuite.com/public/linaro/lkft/builds/2iQqkMfvFPihkYnvWC7Ux... - https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20240626/tes... - https://storage.tuxsuite.com/public/linaro/lkft/builds/2iQqkMfvFPihkYnvWC7Ux...
-- Linaro LKFT https://lkft.linaro.org
On Thu, Jun 27, 2024, at 14:49, Naresh Kamboju wrote:
The powerpc builds failed on Linux next-20240626 tag due to following
arch/powerpc/kernel/nvram_64.c:79:17: error: initialization of 'void (*)(struct kmsg_dumper *, enum kmsg_dump_reason, const char *)' from incompatible pointer type 'void (*)(struct kmsg_dumper *, enum kmsg_dump_reason)' [-Werror=incompatible-pointer-types] 79 | .dump = oops_to_nvram | ^~~~~~~~~~~~~ arch/powerpc/kernel/nvram_64.c:79:17: note: (near initialization for 'nvram_kmsg_dumper.dump') arch/powerpc/kernel/nvram_64.c:645:13: error: conflicting types for 'oops_to_nvram'; have 'void(struct kmsg_dumper *, enum kmsg_dump_reason, const char *)' 645 | static void oops_to_nvram(struct kmsg_dumper *dumper, | ^~~~~~~~~~~~~ arch/powerpc/kernel/nvram_64.c:75:13: note: previous declaration of 'oops_to_nvram' with type 'void(struct kmsg_dumper *, enum kmsg_dump_reason)' 75 | static void oops_to_nvram(struct kmsg_dumper *dumper, | ^~~~~~~~~~~~~ arch/powerpc/kernel/nvram_64.c:75:13: error: 'oops_to_nvram' used but never defined [-Werror] arch/powerpc/kernel/nvram_64.c:645:13: error: 'oops_to_nvram' defined but not used [-Werror=unused-function] 645 | static void oops_to_nvram(struct kmsg_dumper *dumper, | ^~~~~~~~~~~~~ cc1: all warnings being treated as error
The problem is the forward declaration that was not changed as part of commit 7e72bb7504d1 ("printk: add a short description string to kmsg_dump()"). This should fix it:
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c index e385d3164648..a9da83c4243a 100644 --- a/arch/powerpc/kernel/nvram_64.c +++ b/arch/powerpc/kernel/nvram_64.c @@ -73,7 +73,8 @@ static const char *nvram_os_partitions[] = { };
static void oops_to_nvram(struct kmsg_dumper *dumper, - enum kmsg_dump_reason reason); + enum kmsg_dump_reason reason, + const char *desc);
static struct kmsg_dumper nvram_kmsg_dumper = { .dump = oops_to_nvram
Arnd