2010-01-16 01:12:54 +01:00
|
|
|
Index: xen-4.0.0-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c
|
2009-08-17 14:57:35 +02:00
|
|
|
===================================================================
|
2010-01-16 01:12:54 +01:00
|
|
|
--- xen-4.0.0-testing.orig/xen/arch/x86/hvm/hyperv/hv_intercept.c
|
|
|
|
+++ xen-4.0.0-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c
|
2009-08-17 14:57:35 +02:00
|
|
|
@@ -33,6 +33,7 @@
|
|
|
|
|
|
|
|
#include <asm/config.h>
|
|
|
|
#include <asm/hvm/io.h>
|
|
|
|
+#include <asm/hvm/support.h>
|
|
|
|
#include <asm/processor.h>
|
|
|
|
#include <asm/page.h>
|
|
|
|
#include <asm/apicdef.h>
|
2010-01-16 01:12:54 +01:00
|
|
|
@@ -988,8 +989,15 @@ hyperv_do_wr_msr(uint32_t idx, struct cp
|
2009-08-17 14:57:35 +02:00
|
|
|
break;
|
|
|
|
case HV_MSR_APIC_ASSIST_PAGE:
|
|
|
|
/*
|
|
|
|
- * For now ignore this.
|
|
|
|
+ * We don't support the APIC assist page; windows7 appears to
|
|
|
|
+ * use this; set it up so that os uses the APIC MSR to indicate EOI.
|
|
|
|
*/
|
|
|
|
+ if (msr_content & 0x1) {
|
|
|
|
+ uint32_t data = 0;
|
|
|
|
+ paddr_t assist_page = msr_content & ~1UL;
|
|
|
|
+ (void)hvm_copy_to_guest_phys(assist_page, &data, sizeof(data));
|
2009-10-12 16:04:55 +02:00
|
|
|
+ }
|
2009-08-17 14:57:35 +02:00
|
|
|
+
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|