[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XTF 4/4] setup: Setup PV console for HVM guests on xen >4.2
From: Paul Semel <phentex@xxxxxxxxx> Xen 4.2 requires a workaround that does not setup PV console for HVM guests. However, newer Xen versions do not have that limitation and should always have the PV console setup. In arch_setup() detects Xen version by issuing xen_version hypercall and optionally passes the version to main_xtf(). Signed-off-by: Paul Semel <phentex@xxxxxxxxx> Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx> --- arch/x86/setup.c | 20 ++++++++++++++++++-- common/setup.c | 6 +++++- include/xtf/framework.h | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/arch/x86/setup.c b/arch/x86/setup.c index f6fa4df..e3f74e6 100644 --- a/arch/x86/setup.c +++ b/arch/x86/setup.c @@ -250,8 +250,10 @@ static void xen_console_write(const char *buf, size_t len) hypercall_console_write(buf, len); } -void arch_setup(void) +void arch_setup(int *version) { + int xen_version; + if ( IS_DEFINED(CONFIG_HVM) && !pvh_start_info ) { register_console_callback(qemu_console_write); @@ -272,9 +274,23 @@ void arch_setup(void) init_hypercalls(); - if ( !is_initdomain() ) + xen_version = hypercall_xen_version(XENVER_version, NULL); + if ( version ) + *version = xen_version; + + /* + * The setup_pv_console function registers a writing function + * that makes hvm guests crash on Xen 4.2 + */ + if ( (!IS_DEFINED(CONFIG_HVM) || + (XEN_MAJOR(xen_version) >= 4 && XEN_MINOR(xen_version) > 2)) && + !is_initdomain() ) { setup_pv_console(); + } + + if ( !is_initdomain() ) + { setup_xenbus(); } diff --git a/common/setup.c b/common/setup.c index 932fc09..1d3da15 100644 --- a/common/setup.c +++ b/common/setup.c @@ -19,9 +19,13 @@ */ void __noreturn xtf_main(void) { - arch_setup(); + int xen_version; + + arch_setup(&xen_version); printk("--- Xen Test Framework ---\n"); + printk("Found Xen: %d.%d\n", XEN_MAJOR(xen_version), + XEN_MINOR(xen_version)); printk("Environment: %s\n", environment_description); printk("%s\n", test_title); diff --git a/include/xtf/framework.h b/include/xtf/framework.h index a71bf39..6664733 100644 --- a/include/xtf/framework.h +++ b/include/xtf/framework.h @@ -2,7 +2,7 @@ #define XTF_FRAMEWORK_H /* To be implemented by each arch */ -void arch_setup(void); +void arch_setup(int *); void test_setup(void); /* Single line summary of execution environment. */ -- 2.16.6 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |