| From: Baoquan He <bhe@redhat.com> |
| Subject: riscv, crash: wrap crash dumping code into crash related ifdefs |
| Date: Wed, 24 Jan 2024 13:12:52 +0800 |
| |
| Now crash codes under kernel/ folder has been split out from kexec |
| code, crash dumping can be separated from kexec reboot in config |
| items on risc-v with some adjustments. |
| |
| Here wrap up crash dumping codes with CONFIG_CRASH_DUMP ifdeffery, and |
| use IS_ENABLED(CONFIG_CRASH_RESERVE) check to decide if compiling |
| in the crashkernel reservation code. |
| |
| Link: https://lkml.kernel.org/r/20240124051254.67105-13-bhe@redhat.com |
| Signed-off-by: Baoquan He <bhe@redhat.com> |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Eric W. Biederman <ebiederm@xmission.com> |
| Cc: Hari Bathini <hbathini@linux.ibm.com> |
| Cc: Pingfan Liu <piliu@redhat.com> |
| Cc: Klara Modin <klarasmodin@gmail.com> |
| Cc: Michael Kelley <mhklinux@outlook.com> |
| Cc: Nathan Chancellor <nathan@kernel.org> |
| 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> |
| --- |
| |
| arch/riscv/kernel/elf_kexec.c | 9 +++++++-- |
| arch/riscv/mm/init.c | 2 +- |
| 2 files changed, 8 insertions(+), 3 deletions(-) |
| |
| --- a/arch/riscv/kernel/elf_kexec.c~riscv-crash-wrap-crash-dumping-code-into-crash-related-ifdefs |
| +++ a/arch/riscv/kernel/elf_kexec.c |
| @@ -117,6 +117,7 @@ static int elf_find_pbase(struct kimage |
| return ret; |
| } |
| |
| +#ifdef CONFIG_CRASH_DUMP |
| static int get_nr_ram_ranges_callback(struct resource *res, void *arg) |
| { |
| unsigned int *nr_ranges = arg; |
| @@ -189,6 +190,7 @@ static char *setup_kdump_cmdline(struct |
| cmdline_ptr[COMMAND_LINE_SIZE - 1] = '\0'; |
| return cmdline_ptr; |
| } |
| +#endif |
| |
| static void *elf_kexec_load(struct kimage *image, char *kernel_buf, |
| unsigned long kernel_len, char *initrd, |
| @@ -196,12 +198,11 @@ static void *elf_kexec_load(struct kimag |
| unsigned long cmdline_len) |
| { |
| int ret; |
| + void *fdt; |
| unsigned long old_kernel_pbase = ULONG_MAX; |
| unsigned long new_kernel_pbase = 0UL; |
| unsigned long initrd_pbase = 0UL; |
| - unsigned long headers_sz; |
| unsigned long kernel_start; |
| - void *fdt, *headers; |
| struct elfhdr ehdr; |
| struct kexec_buf kbuf; |
| struct kexec_elf_info elf_info; |
| @@ -227,8 +228,11 @@ static void *elf_kexec_load(struct kimag |
| kbuf.buf_min = new_kernel_pbase + kernel_len; |
| kbuf.buf_max = ULONG_MAX; |
| |
| +#ifdef CONFIG_CRASH_DUMP |
| /* Add elfcorehdr */ |
| if (image->type == KEXEC_TYPE_CRASH) { |
| + void *headers; |
| + unsigned long headers_sz; |
| ret = prepare_elf_headers(&headers, &headers_sz); |
| if (ret) { |
| pr_err("Preparing elf core header failed\n"); |
| @@ -264,6 +268,7 @@ static void *elf_kexec_load(struct kimag |
| } |
| cmdline = modified_cmdline; |
| } |
| +#endif |
| |
| #ifdef CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY |
| /* Add purgatory to the image */ |
| --- a/arch/riscv/mm/init.c~riscv-crash-wrap-crash-dumping-code-into-crash-related-ifdefs |
| +++ a/arch/riscv/mm/init.c |
| @@ -1355,7 +1355,7 @@ static void __init arch_reserve_crashker |
| bool high = false; |
| int ret; |
| |
| - if (!IS_ENABLED(CONFIG_KEXEC_CORE)) |
| + if (!IS_ENABLED(CONFIG_CRASH_RESERVE)) |
| return; |
| |
| ret = parse_crashkernel(cmdline, memblock_phys_mem_size(), |
| _ |