From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from cantor2.suse.de ([195.135.220.15] helo=mx2.suse.de) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1T4w1k-0001yM-7N for kexec@lists.infradead.org; Fri, 24 Aug 2012 15:42:29 +0000 Subject: [PATCHv3 5/9] Initialize phys_start during early Xen setup From: Petr Tesarik Date: Fri, 24 Aug 2012 17:42:24 +0200 MIME-Version: 1.0 Message-Id: <201208241742.24409.ptesarik@suse.cz> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: kexec@lists.infradead.org Cc: Norbert Trapp 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; _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec