[PATCHv3 5/9] Initialize phys_start during early Xen setup
Petr Tesarik
ptesarik at suse.cz
Fri Aug 24 11:42:24 EDT 2012
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 <ptesarik at suse.cz>
---
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;
More information about the kexec
mailing list