WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] x86 vmx: Add handlers for missing exit_re

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86 vmx: Add handlers for missing exit_reasons documented by Intel SDM 3B
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 15 Sep 2010 07:40:16 -0700
Delivery-date: Wed, 15 Sep 2010 07:43:16 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1284393945 -3600
# Node ID e300bfa3c0323ac08e7b8cd9fb40f9f1ab548543
# Parent  9c5f084135b8dfafc661b586b3230a7b0e94a538
x86 vmx: Add handlers for missing exit_reasons documented by Intel SDM 3B

Signed-off-by: Liu Yuan <yuan.b.liu@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 xen/arch/x86/hvm/vmx/vmx.c        |   20 ++++++++++++++++++++
 xen/include/asm-x86/hvm/vmx/vmx.h |    6 ++++++
 2 files changed, 26 insertions(+)

diff -r 9c5f084135b8 -r e300bfa3c032 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Mon Sep 13 17:00:10 2010 +0100
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Mon Sep 13 17:05:45 2010 +0100
@@ -2331,7 +2331,14 @@ asmlinkage void vmx_vmexit_handler(struc
         case EXIT_REASON_PENDING_VIRT_INTR:
         case EXIT_REASON_PENDING_VIRT_NMI:
         case EXIT_REASON_MCE_DURING_VMENTRY:
+        case EXIT_REASON_GETSEC:
+        case EXIT_REASON_ACCESS_GDTR_OR_IDTR:
+        case EXIT_REASON_ACCESS_LDTR_OR_TR:
+        case EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED:
+        case EXIT_REASON_INVEPT:
+        case EXIT_REASON_INVVPID:
             break;
+
         default:
             v->arch.hvm_vmx.vmx_emulate = 1;
             perfc_incr(realmode_exits);
@@ -2582,6 +2589,15 @@ asmlinkage void vmx_vmexit_handler(struc
     case EXIT_REASON_VMWRITE:
     case EXIT_REASON_VMXOFF:
     case EXIT_REASON_VMXON:
+    case EXIT_REASON_GETSEC:
+    case EXIT_REASON_INVEPT:
+    case EXIT_REASON_INVVPID:
+        /*
+         * We should never exit on GETSEC because CR4.SMXE is always 0 when
+         * running in guest context, and the CPU checks that before getting
+         * as far as vmexit.
+         */
+        WARN_ON(exit_reason == EXIT_REASON_GETSEC);
         vmx_inject_hw_exception(TRAP_invalid_op, HVM_DELIVER_NO_ERROR_CODE);
         break;
 
@@ -2647,6 +2663,10 @@ asmlinkage void vmx_vmexit_handler(struc
         break;
     }
 
+    case EXIT_REASON_ACCESS_GDTR_OR_IDTR:
+    case EXIT_REASON_ACCESS_LDTR_OR_TR:
+    case EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED:
+    /* fall through */
     default:
     exit_and_crash:
         gdprintk(XENLOG_ERR, "Bad vmexit (reason %x)\n", exit_reason);
diff -r 9c5f084135b8 -r e300bfa3c032 xen/include/asm-x86/hvm/vmx/vmx.h
--- a/xen/include/asm-x86/hvm/vmx/vmx.h Mon Sep 13 17:00:10 2010 +0100
+++ b/xen/include/asm-x86/hvm/vmx/vmx.h Mon Sep 13 17:05:45 2010 +0100
@@ -77,6 +77,7 @@ void vmx_update_debug_state(struct vcpu 
 #define EXIT_REASON_PENDING_VIRT_NMI    8
 #define EXIT_REASON_TASK_SWITCH         9
 #define EXIT_REASON_CPUID               10
+#define EXIT_REASON_GETSEC              11
 #define EXIT_REASON_HLT                 12
 #define EXIT_REASON_INVD                13
 #define EXIT_REASON_INVLPG              14
@@ -107,9 +108,14 @@ void vmx_update_debug_state(struct vcpu 
 #define EXIT_REASON_MCE_DURING_VMENTRY  41
 #define EXIT_REASON_TPR_BELOW_THRESHOLD 43
 #define EXIT_REASON_APIC_ACCESS         44
+#define EXIT_REASON_ACCESS_GDTR_OR_IDTR 46
+#define EXIT_REASON_ACCESS_LDTR_OR_TR   47
 #define EXIT_REASON_EPT_VIOLATION       48
 #define EXIT_REASON_EPT_MISCONFIG       49
+#define EXIT_REASON_INVEPT              50
 #define EXIT_REASON_RDTSCP              51
+#define EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED 52
+#define EXIT_REASON_INVVPID             53
 #define EXIT_REASON_WBINVD              54
 #define EXIT_REASON_XSETBV              55
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86 vmx: Add handlers for missing exit_reasons documented by Intel SDM 3B, Xen patchbot-unstable <=