[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |