| From: Baoquan He <bhe@redhat.com> |
| Subject: crash: fix building error in generic codes |
| Date: Mon, 29 Jan 2024 21:50:32 +0800 |
| |
| Nathan reported some building errors on arm64 as below: |
| |
| ========== |
| $ curl -LSso .config https://github.com/archlinuxarm/PKGBUILDs/raw/master/core/linux-aarch64/config |
| $ make -skj"$(nproc)" ARCH=arm64 CROSS_COMPILE=aarch64-linux- olddefconfig all |
| .. |
| aarch64-linux-ld: kernel/kexec_file.o: in function `kexec_walk_memblock.constprop.0': |
| kexec_file.c:(.text+0x314): undefined reference to `crashk_res' |
| .. |
| aarch64-linux-ld: drivers/of/kexec.o: in function `of_kexec_alloc_and_setup_fdt': |
| kexec.c:(.text+0x580): undefined reference to `crashk_res' |
| .. |
| aarch64-linux-ld: kexec.c:(.text+0x5c0): undefined reference to `crashk_low_res' |
| ========== |
| |
| On the provided config, it has: |
| === |
| CONFIG_VMCORE_INFO=y |
| CONFIG_KEXEC_CORE=y |
| CONFIG_KEXEC=y |
| CONFIG_KEXEC_FILE=y |
| === |
| |
| For these crash related code blocks, they need put inside CONFIG_CRASH_DUMP |
| ifdeffery scope to avoid building erorr when CONFIG_CRASH_DUMP is not |
| set. |
| |
| Link: https://lkml.kernel.org/r/20240129135033.157195-2-bhe@redhat.com |
| Signed-off-by: Baoquan He <bhe@redhat.com> |
| Reported-by: Nathan Chancellor <nathan@kernel.org> |
| Closes: https://lore.kernel.org/all/20240126045551.GA126645@dev-arch.thelio-3990X/T/#u |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Eric W. Biederman <ebiederm@xmission.com> |
| Cc: Hari Bathini <hbathini@linux.ibm.com> |
| Cc: Klara Modin <klarasmodin@gmail.com> |
| Cc: Michael Kelley <mhklinux@outlook.com> |
| Cc: Pingfan Liu <piliu@redhat.com> |
| Cc: Stephen Rothwell <sfr@canb.auug.org.au> |
| Cc: Yang Li <yang.lee@linux.alibaba.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| drivers/of/kexec.c | 2 ++ |
| kernel/kexec_file.c | 2 ++ |
| 2 files changed, 4 insertions(+) |
| |
| --- a/drivers/of/kexec.c~arm64-crash-wrap-crash-dumping-code-into-crash-related-ifdefs-fix |
| +++ a/drivers/of/kexec.c |
| @@ -395,6 +395,7 @@ void *of_kexec_alloc_and_setup_fdt(const |
| if (ret) |
| goto out; |
| |
| +#ifdef CONFIG_CRASH_DUMP |
| /* add linux,usable-memory-range */ |
| ret = fdt_appendprop_addrrange(fdt, 0, chosen_node, |
| "linux,usable-memory-range", crashk_res.start, |
| @@ -410,6 +411,7 @@ void *of_kexec_alloc_and_setup_fdt(const |
| if (ret) |
| goto out; |
| } |
| +#endif |
| } |
| |
| /* add bootargs */ |
| --- a/kernel/kexec_file.c~arm64-crash-wrap-crash-dumping-code-into-crash-related-ifdefs-fix |
| +++ a/kernel/kexec_file.c |
| @@ -540,8 +540,10 @@ static int kexec_walk_memblock(struct ke |
| phys_addr_t mstart, mend; |
| struct resource res = { }; |
| |
| +#ifdef CONFIG_CRASH_DUMP |
| if (kbuf->image->type == KEXEC_TYPE_CRASH) |
| return func(&crashk_res, kbuf); |
| +#endif |
| |
| /* |
| * Using MEMBLOCK_NONE will properly skip MEMBLOCK_DRIVER_MANAGED. See |
| _ |