Production kernel may reserved multiple crash kernel segments, like: 'crashkernel=4G,high crashkernel=256M,low'. So we should pass multiple mem=<size>@<address> parameters in capture kernel. Signed-off-by: Hongchen Zhang <zhanghongchen@xxxxxxxxxxx> Signed-off-by: Ming Wang <wangming01@xxxxxxxxxxx> --- kexec/arch/loongarch/kexec-loongarch.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kexec/arch/loongarch/kexec-loongarch.c b/kexec/arch/loongarch/kexec-loongarch.c index 32a42d2..f00027c 100644 --- a/kexec/arch/loongarch/kexec-loongarch.c +++ b/kexec/arch/loongarch/kexec-loongarch.c @@ -289,6 +289,7 @@ int loongarch_load_other_segments(struct kexec_info *info, unsigned long hole_mi unsigned long initrd_min, hole_max; char *initrd_buf = NULL; unsigned long pagesize = getpagesize(); + int i; if (arch_options.command_line) { if (strlen(arch_options.command_line) > @@ -326,9 +327,11 @@ int loongarch_load_other_segments(struct kexec_info *info, unsigned long hole_mi cmdline_add_elfcorehdr(cmdline, elfcorehdr_mem.start, elfcorehdr_mem.end - elfcorehdr_mem.start + 1); - cmdline_add_mem(cmdline, crash_reserved_mem[usablemem_rgns.size - 1].start, - crash_reserved_mem[usablemem_rgns.size - 1].end - - crash_reserved_mem[usablemem_rgns.size - 1].start + 1); + for(i = 0;i < usablemem_rgns.size; i++) { + cmdline_add_mem(cmdline, crash_reserved_mem[i].start, + crash_reserved_mem[i].end - + crash_reserved_mem[i].start + 1); + } } cmdline[sizeof(cmdline) - 1] = 0; base-commit: 2a3e54e9f734ce08dee20b4ff1bdd5037f1b0193 -- 2.39.2 _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec