[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [SVM] Fix an interrupt race window in the do_launch/vmrun/vmexit loop for AMD-V.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 2b89ebf00fc884f68168abea4159c11f31db131a
# Parent  cba947bc845063ed820142bb921121ab8ead6452
[SVM] Fix an interrupt race window in the do_launch/vmrun/vmexit loop for AMD-V.

There is also some comment cleanup in this patch.

This problem found by Virtual Iron (Dave Winchell), and patch also
provided by VI.

Signed-off-by: Tom Woller <thomas.woller@xxxxxxx>
Signed-off-by: Dave Winchell <dwinchell@xxxxxxxxxxxxxxx>
---
 xen/arch/x86/hvm/svm/x86_32/exits.S |    7 +++----
 xen/arch/x86/hvm/svm/x86_64/exits.S |   11 +++++------
 2 files changed, 8 insertions(+), 10 deletions(-)

diff -r cba947bc8450 -r 2b89ebf00fc8 xen/arch/x86/hvm/svm/x86_32/exits.S
--- a/xen/arch/x86/hvm/svm/x86_32/exits.S       Tue Nov 07 17:46:40 2006 +0000
+++ b/xen/arch/x86/hvm/svm/x86_32/exits.S       Tue Nov 07 17:48:18 2006 +0000
@@ -34,7 +34,7 @@
  * At VMExit time the processor saves the guest selectors, esp, eip, 
  * and eflags. Therefore we don't save them, but simply decrement 
  * the kernel stack pointer to make it consistent with the stack frame 
- * at usual interruption time. The eflags of the host is not saved by VMX, 
+ * at usual interruption time. The eflags of the host is not saved by AMD-V, 
  * and we set it to the fixed value.
  *
  * We also need the room, especially because orig_eax field is used 
@@ -89,8 +89,8 @@
 #define CLGI   .byte 0x0F,0x01,0xDD
 
 ENTRY(svm_asm_do_launch)
+        CLGI                
         sti
-        CLGI                
         GET_CURRENT(%ebx)
         movl VCPU_svm_vmcb(%ebx), %ecx
         movl 24(%esp), %eax
@@ -152,9 +152,8 @@ svm_restore_all_guest:
         call svm_intr_assist
         call svm_asid
         call svm_load_cr2
-        sti
         /* 
-         * Check if we are going back to SVM-based VM
+         * Check if we are going back to AMD-V based VM
          * By this time, all the setups in the VMCB must be complete.
          */
         jmp svm_asm_do_launch
diff -r cba947bc8450 -r 2b89ebf00fc8 xen/arch/x86/hvm/svm/x86_64/exits.S
--- a/xen/arch/x86/hvm/svm/x86_64/exits.S       Tue Nov 07 17:46:40 2006 +0000
+++ b/xen/arch/x86/hvm/svm/x86_64/exits.S       Tue Nov 07 17:48:18 2006 +0000
@@ -1,5 +1,5 @@
 /*
- * exits.S: SVM architecture-specific exit handling.
+ * exits.S: AMD-V architecture-specific exit handling.
  * Copyright (c) 2004, Intel Corporation.
  * Copyright (c) 2005, AMD Corporation.
  *
@@ -34,7 +34,7 @@
  * At VMExit time the processor saves the guest selectors, rsp, rip, 
  * and rflags. Therefore we don't save them, but simply decrement 
  * the kernel stack pointer to make it consistent with the stack frame 
- * at usual interruption time. The rflags of the host is not saved by VMX, 
+ * at usual interruption time. The rflags of the host is not saved by AMD-V, 
  * and we set it to the fixed value.
  *
  * We also need the room, especially because orig_eax field is used 
@@ -99,8 +99,8 @@
 #define CLGI   .byte 0x0F,0x01,0xDD
 
 ENTRY(svm_asm_do_launch)
+        CLGI                
         sti
-        CLGI                
         GET_CURRENT(%rbx)
         movq VCPU_svm_vmcb(%rbx), %rcx
         movq UREGS_rax(%rsp), %rax
@@ -165,10 +165,9 @@ svm_restore_all_guest:
         call svm_intr_assist
         call svm_asid
         call svm_load_cr2
-        sti
         /*
-         * Check if we are going back to VMX-based VM
-         * By this time, all the setups in the VMCS must be complete.
+         * Check if we are going back to AMD-V based VM
+         * By this time, all the setups in the VMCB must be complete.
          */
         jmp svm_asm_do_launch
 

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.