From: Luo Haiyang <[email protected]> On RISC-V, due to the kernel image being additionally exported in /proc/iomem, the kernel memory range is not correctly handled by to_be_excluded.
Signed-off-by: Luo Haiyang <[email protected]> --- kexec/arch/riscv/iomem.h | 2 -- kexec/arch/riscv/kexec-riscv.c | 8 +++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/kexec/arch/riscv/iomem.h b/kexec/arch/riscv/iomem.h index 86da971..1ab704c 100644 --- a/kexec/arch/riscv/iomem.h +++ b/kexec/arch/riscv/iomem.h @@ -2,8 +2,6 @@ #define IOMEM_H #define SYSTEM_RAM "System RAM\n" -#define KERNEL_CODE "Kernel code\n" -#define KERNEL_DATA "Kernel data\n" #define KERNEL_IMAGE "Kernel image\n" #define CRASH_KERNEL "Crash kernel\n" #define IOMEM_RESERVED "Reserved\n" diff --git a/kexec/arch/riscv/kexec-riscv.c b/kexec/arch/riscv/kexec-riscv.c index a5a12a0..72fde08 100644 --- a/kexec/arch/riscv/kexec-riscv.c +++ b/kexec/arch/riscv/kexec-riscv.c @@ -417,12 +417,10 @@ static bool to_be_excluded(char *str, unsigned long long start, unsigned long lo return true; } - if (!strncmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) || - !strncmp(str, KERNEL_CODE, strlen(KERNEL_CODE)) || - !strncmp(str, KERNEL_DATA, strlen(KERNEL_DATA))) - return false; - else + if (!strncmp(str, IOMEM_RESERVED, strlen(IOMEM_RESERVED))) return true; + + return false; } int get_memory_ranges(struct memory_range **range, int *num_ranges, -- 2.27.0 罗海洋 操作系统产品部/中心研究院/系统产品_产研平台与直属 中兴通讯股份有限公司 成都市天府大道中段800号中兴大厦A座 M: +86 18215606036 E: [email protected] www.zte.com.cn ------------------Original------------------ From: 罗海洋10243395 To: [email protected] <[email protected]>;simonhorman <[email protected]>; Cc: 张润10190954;蔡衢10034260; Date: 2026年05月21日 11:47 Subject: [PATCH v3 0/4] kexec-tool:bug fix for crashdump load on riscv From: Luo Haiyang <[email protected]> This patchset fixes kexec-tool related to crashdump load on riscv patch 1: crashload should use all system RAM but crash reserved memory. patch 2: make the phys_to_virt function return the correct value. patch 3: vmcore-dmesg accesses the address located in the bss segment, use kernel image to creat kernel text elf header. patch 4: due to the kernel image being additionally exported in /proc/iomem, the kernel memory range is not correctly handled by to_be_excluded. Changes from v2: - use kernel image to creat kernel text elf header - do not exclude kernel memory range - https://lore.kernel.org/kexec/[email protected]/T/#md89827a089395745d3bd361889e4f3c490641732 Changes from v1: - Add patch 2 and patch 3 to fix other bug - https://lore.kernel.org/kexec/[email protected]/T/#u Luo Haiyang (4): RISC-V: fix crashdump load memory ranges RISCV: Fix incorrect virtual address translation in crashdump load RISC-V: use kernel image to creat kernel text elf header RISC-V: kernel image memory rang should not be excluded kexec/arch/riscv/Makefile | 2 + kexec/arch/riscv/crashdump-riscv.c | 218 +++++++++++++++++++---------- kexec/arch/riscv/iomem.h | 3 +- kexec/arch/riscv/kexec-riscv.c | 8 +- util_lib/elf_info.c | 41 ++++-- util_lib/include/elf_info.h | 1 + 6 files changed, 184 insertions(+), 89 deletions(-) -- 2.27.0
