From: Luo Haiyang <[email protected]>

The kdump service reported the following error:

  No program header covering vaddr 0xffffffff819fa200 found kexec bug?
  saving vmcore-dmesg.txt failed

prb stores the address of printk_rb_dynamic. Since printk_rb_dynamic
resides in the bss segment and the PHDR (Program Header) does not include
the bss segment address. Therefore,  add the bss segment to the Kernel text.

Signed-off-by: Luo Haiyang <[email protected]>
---
 kexec/arch/riscv/crashdump-riscv.c | 2 +-
 kexec/arch/riscv/iomem.h           | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/kexec/arch/riscv/crashdump-riscv.c 
b/kexec/arch/riscv/crashdump-riscv.c
index 6875249..a892225 100644
--- a/kexec/arch/riscv/crashdump-riscv.c
+++ b/kexec/arch/riscv/crashdump-riscv.c
@@ -88,7 +88,7 @@ static int iomem_range_callback(void *UNUSED(data), int 
UNUSED(nr),
                                                base, length, RANGE_RAM);
        else if (strncmp(str, KERNEL_CODE, strlen(KERNEL_CODE)) == 0)
                elf_info.kern_paddr_start = base;
-       else if (strncmp(str, KERNEL_DATA, strlen(KERNEL_DATA)) == 0)
+       else if (strncmp(str, KERNEL_BSS, strlen(KERNEL_BSS)) == 0)
                elf_info.kern_size = base + length - elf_info.kern_paddr_start;

        return 0;
diff --git a/kexec/arch/riscv/iomem.h b/kexec/arch/riscv/iomem.h
index 7671e26..fcc0d0a 100644
--- a/kexec/arch/riscv/iomem.h
+++ b/kexec/arch/riscv/iomem.h
@@ -4,6 +4,7 @@
 #define SYSTEM_RAM             "System RAM\n"
 #define KERNEL_CODE            "Kernel code\n"
 #define KERNEL_DATA            "Kernel data\n"
+#define KERNEL_BSS             "Kernel bss\n"
 #define CRASH_KERNEL           "Crash kernel\n"
 #define IOMEM_RESERVED         "Reserved\n"

-- 
2.27.0

Reply via email to