Hello Dave, >[dyoung at dhcp-*-* makedumpfile]$ sudo ./makedumpfile -l -d 31 /mnt/vmcore/vmcore /tmp/vmcore.1 >The kernel version is not supported. >The makedumpfile operation may be incomplete. >Checking for memory holes : [100.0 %] | __vtop4_x86_64: Can't get a valid pte. >readmem: Can't convert a virtual address(ffff88007ebb1000) to physical address. >readmem: type_addr: 0, addr:ffff88007ebb1000, size:32768 >__exclude_unnecessary_pages: Can't read the buffer of struct page. >create_2nd_bitmap: Can't exclude unnecessary pages. > >makedumpfile Failed. > >If you need the vmcore for debugging please let me know, my test is just >a normal test in kvm guest. Thanks for your report. I can't reproduce that in my environment, could you give me the vmcore ? It's helpful if you append the vmlinux and the .config. Thanks, Atsushi Kumagai >> >>Signed-off-by: Jeff Mahoney <jeffm at suse.com> >> >>--- >> >> arch/x86_64.c | 24 +++++++++++++++++++++--- >> >> makedumpfile.c | 6 ++++++ >> >> makedumpfile.h | 2 ++ >> >> 3 files changed, 29 insertions(+), 3 deletions(-) >> >> >> >>diff --git a/arch/x86_64.c b/arch/x86_64.c >> >>index 08dd6b2..9b09035 100644 >> >>--- a/arch/x86_64.c >> >>+++ b/arch/x86_64.c >> >>@@ -259,16 +259,26 @@ vtop4_x86_64(unsigned long vaddr) >> >> { >> >> unsigned long page_dir, pml4, pgd_paddr, pgd_pte, pmd_paddr, pmd_pte; >> >> unsigned long pte_paddr, pte; >> >>+ unsigned long init_level4_pgt; >> >> >> >>- if (SYMBOL(init_level4_pgt) == NOT_FOUND_SYMBOL) { >> >>+ if (SYMBOL(init_level4_pgt) != NOT_FOUND_SYMBOL) >> >>+ init_level4_pgt = SYMBOL(init_level4_pgt); >> >>+ else if (SYMBOL(init_top_pgt) != NOT_FOUND_SYMBOL) >> >>+ init_level4_pgt = SYMBOL(init_top_pgt); >> >>+ else { >> >> ERRMSG("Can't get the symbol of init_level4_pgt.\n"); >> >> return NOT_PADDR; >> >> } >> >> >> >>+ if (SYMBOL(level4_kernel_pgt) != NOT_FOUND_SYMBOL) { >> >>+ ERRMSG("Kernel is built with 5-level page tables\n"); >> >>+ return NOT_PADDR; >> >>+ } >> >>+ >> >> /* >> >> * Get PGD. >> >> */ >> >>- page_dir = SYMBOL(init_level4_pgt) - __START_KERNEL_map + info->phys_base; >> >>+ page_dir = init_level4_pgt - __START_KERNEL_map + info->phys_base; >> >> if (is_xen_memory()) { >> >> page_dir = ptom_xen(page_dir); >> >> if (page_dir == NOT_PADDR) >> >>@@ -549,8 +559,16 @@ find_vmemmap_x86_64() >> >> struct vmap_pfns *vmapp, *vmaphead = NULL, *cur, *tail; >> >> >> >> init_level4_pgt = SYMBOL(init_level4_pgt); >> >>+ if (init_level4_pgt == NOT_FOUND_SYMBOL) >> >>+ init_level4_pgt = SYMBOL(init_top_pgt); >> >>+ >> >> if (init_level4_pgt == NOT_FOUND_SYMBOL) { >> >>- ERRMSG("init_level4_pgt not found\n"); >> >>+ ERRMSG("init_level4_pgt/init_top_pgt not found\n"); >> >>+ return FAILED; >> >>+ } >> >>+ >> >>+ if (SYMBOL(level4_kernel_pgt) != NOT_FOUND_SYMBOL) { >> >>+ ERRMSG("kernel is configured for 5-level page tables\n"); >> >> return FAILED; >> >> } >> >> pagestructsize = size_table.page; >> >>diff --git a/makedumpfile.c b/makedumpfile.c >> >>index f85003a..6e5ec34 100644 >> >>--- a/makedumpfile.c >> >>+++ b/makedumpfile.c >> >>@@ -1486,6 +1486,8 @@ get_symbol_info(void) >> >> SYMBOL_INIT(_stext, "_stext"); >> >> SYMBOL_INIT(swapper_pg_dir, "swapper_pg_dir"); >> >> SYMBOL_INIT(init_level4_pgt, "init_level4_pgt"); >> >>+ SYMBOL_INIT(level4_kernel_pgt, "level4_kernel_pgt"); >> >>+ SYMBOL_INIT(init_top_pgt, "init_top_pgt"); >> >> SYMBOL_INIT(vmlist, "vmlist"); >> >> SYMBOL_INIT(vmap_area_list, "vmap_area_list"); >> >> SYMBOL_INIT(node_online_map, "node_online_map"); >> >>@@ -2105,6 +2107,8 @@ write_vmcoreinfo_data(void) >> >> WRITE_SYMBOL("_stext", _stext); >> >> WRITE_SYMBOL("swapper_pg_dir", swapper_pg_dir); >> >> WRITE_SYMBOL("init_level4_pgt", init_level4_pgt); >> >>+ WRITE_SYMBOL("level4_kernel_pgt", level4_kernel_pgt); >> >>+ WRITE_SYMBOL("init_top_pgt", init_top_pgt); >> >> WRITE_SYMBOL("vmlist", vmlist); >> >> WRITE_SYMBOL("vmap_area_list", vmap_area_list); >> >> WRITE_SYMBOL("node_online_map", node_online_map); >> >>@@ -2500,6 +2504,8 @@ read_vmcoreinfo(void) >> >> READ_SYMBOL("_stext", _stext); >> >> READ_SYMBOL("swapper_pg_dir", swapper_pg_dir); >> >> READ_SYMBOL("init_level4_pgt", init_level4_pgt); >> >>+ READ_SYMBOL("level4_kernel_pgt", level4_kernel_pgt); >> >>+ READ_SYMBOL("init_top_pgt", init_top_pgt); >> >> READ_SYMBOL("vmlist", vmlist); >> >> READ_SYMBOL("vmap_area_list", vmap_area_list); >> >> READ_SYMBOL("node_online_map", node_online_map); >> >>diff --git a/makedumpfile.h b/makedumpfile.h >> >>index 8a05794..9357e47 100644 >> >>--- a/makedumpfile.h >> >>+++ b/makedumpfile.h >> >>@@ -1517,6 +1517,8 @@ struct symbol_table { >> >> unsigned long long _stext; >> >> unsigned long long swapper_pg_dir; >> >> unsigned long long init_level4_pgt; >> >>+ unsigned long long level4_kernel_pgt; >> >>+ unsigned long long init_top_pgt; >> >> unsigned long long vmlist; >> >> unsigned long long vmap_area_list; >> >> unsigned long long phys_base; >> >> >> >> >> >>-- >> >>Jeff Mahoney >> >>SUSE Labs >> > >> > >> > >> >_______________________________________________ >> >kexec mailing list >> >kexec at lists.infradead.org >> >http://lists.infradead.org/mailman/listinfo/kexec >> >> >> _______________________________________________ >> kexec mailing list >> kexec at lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/kexec > >Thanks >Dave