With early Xen setup, we can move the initialization of xen_phys_start to the setup routine. This is cleaner, as we can get rid of ifdef'ed arch-specific code in makedumpfile.c (which should IMO stay generic). Signed-off-by: Petr Tesarik --- arch/x86.c | 9 +++++++++ arch/x86_64.c | 9 +++++++++ makedumpfile.c | 16 ---------------- 3 files changed, 18 insertions(+), 16 deletions(-) --- a/arch/x86.c +++ b/arch/x86.c @@ -296,6 +296,15 @@ int get_xen_basic_info_x86(void) unsigned long frame_table_vaddr; unsigned long xen_end; + if (!info->xen_phys_start) { + if (info->xen_crash_info_v < 2) { + ERRMSG("Can't get Xen physical start address.\n" + "Please use the --xen_phys_start option."); + return FALSE; + } + info->xen_phys_start = info->xen_crash_info.v2->xen_phys_start; + } + if (SYMBOL(pgd_l2) == NOT_FOUND_SYMBOL && SYMBOL(pgd_l3) == NOT_FOUND_SYMBOL) { ERRMSG("Can't get pgd.\n"); --- a/arch/x86_64.c +++ b/arch/x86_64.c @@ -361,6 +361,15 @@ int get_xen_basic_info_x86_64(void) unsigned long frame_table_vaddr; unsigned long xen_end; + if (!info->xen_phys_start) { + if (info->xen_crash_info_v < 2) { + ERRMSG("Can't get Xen physical start address.\n" + "Please use the --xen_phys_start option."); + return FALSE; + } + info->xen_phys_start = info->xen_crash_info.v2->xen_phys_start; + } + if (SYMBOL(pgd_l4) == NOT_FOUND_SYMBOL) { ERRMSG("Can't get pml4.\n"); return FALSE; --- a/makedumpfile.c +++ b/makedumpfile.c @@ -5365,20 +5365,6 @@ init_xen_crash_info(void) } int -get_xen_phys_start(void) -{ - if (info->xen_phys_start) - return TRUE; - -#if defined(__x86__) || defined(__x86_64__) - if (info->xen_crash_info_v >= 2) - info->xen_phys_start = info->xen_crash_info.v2->xen_phys_start; -#endif - - return TRUE; -} - -int get_xen_info(void) { unsigned long domain; @@ -5877,8 +5863,6 @@ initial_xen(void) if (!read_vmcoreinfo_from_vmcore(offset, size, TRUE)) return FALSE; } - if (!get_xen_phys_start()) - return FALSE; if (!get_xen_info()) return FALSE;