|
[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 |