-----Original Message----- > On kernels v5.8 or later, makedumpfile fails for memory dumps in the > sadump-related formats as follows: > > # makedumpfile -f -l -d 31 -x ./vmlinux /dev/sdd4 /root/vmcore-ld31 > __vtop4_x86_64: Can't get a valid pud_pte. > ...110 lines of the same message... > __vtop4_x86_64: Can't get a valid pud_pte. > calc_kaslr_offset: failed to calculate kaslr_offset and phys_base; default to 0 > readmem: type_addr: 1, addr:ffffffff85411858, size:8 > __vtop4_x86_64: Can't get pgd (page_dir:ffffffff85411858). > readmem: Can't convert a virtual address(ffffffff059be980) to physical address. > readmem: type_addr: 0, addr:ffffffff059be980, size:1024 > cpu_online_mask_init: Can't read cpu_online_mask memory. > > makedumpfile Failed. > > This is caused by the kernel commit 9d06c4027f21 ("x86/entry: Convert > Divide Error to IDTENTRY") that renamed divide_error to > asm_exc_divide_error, breaking logic for calculating kaslr offset. > > Fix this by adding initialization of asm_exc_divide_error. > > Signed-off-by: HATAYAMA Daisuke <d.hatayama@xxxxxxxxxxx> > --- > makedumpfile.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/makedumpfile.c b/makedumpfile.c > index a51bdaf..7ed9756 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -1667,6 +1667,8 @@ get_symbol_info(void) > SYMBOL_INIT(cur_cpu_spec, "cur_cpu_spec"); > > SYMBOL_INIT(divide_error, "divide_error"); > + if (SYMBOL(divide_error) == NOT_FOUND_SYMBOL) > + SYMBOL_INIT(divide_error, "asm_exc_divide_error"); > SYMBOL_INIT(idt_table, "idt_table"); > SYMBOL_INIT(saved_command_line, "saved_command_line"); > SYMBOL_INIT(pti_init, "pti_init"); > -- > 2.31.1 Thanks, applied. https://github.com/makedumpfile/makedumpfile/commit/59b1726fbcc251155140c8a1972384498fee4daf Kazu _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec