]> xenbits.xensource.com Git - xen.git/commitdiff
x86/hvm: Use SAVE_ALL to construct the cpu_user_regs frame after VMExit
authorAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 14 Feb 2018 11:38:07 +0000 (12:38 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 14 Feb 2018 11:38:07 +0000 (12:38 +0100)
No practical change.

One side effect in debug builds is that %rbp is inverted in the manner
expected by the stack unwinder to indicate a interrupt frame.

This is part of XSA-254.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
master commit: 13682ca8c94bd5612a44f7f1edc1fd8ff675dacb
master date: 2018-01-05 19:57:08 +0000

xen/arch/x86/hvm/svm/entry.S
xen/arch/x86/hvm/vmx/entry.S

index e816d661aba3026c21d9b79ffa8894c3f3f73fdd..442d2d62c649f841814b883abb8aba26fd3ae7b1 100644 (file)
@@ -97,24 +97,10 @@ UNLIKELY_END(svm_trace)
 
         VMRUN
 
-        GET_CURRENT(%rax)
-        push %rdi
-        push %rsi
-        push %rdx
-        push %rcx
-        mov  VCPU_svm_vmcb(%rax),%rcx
-        push %rax
-        push %r8
-        push %r9
-        push %r10
-        push %r11
-        push %rbx
-        mov  %rax,%rbx
-        push %rbp
-        push %r12
-        push %r13
-        push %r14
-        push %r15
+        SAVE_ALL
+
+        GET_CURRENT(%rbx)
+        mov  VCPU_svm_vmcb(%rbx),%rcx
 
         movb $0,VCPU_svm_vmcb_in_sync(%rbx)
         mov  VMCB_rax(%rcx),%rax
index a5438a47f363e13d33c76c8eea9a9061a38a7e14..1744615bc64ee6cefe81dc724076d9e3f5fc743c 100644 (file)
 #define VMLAUNCH     .byte 0x0f,0x01,0xc2
 
 ENTRY(vmx_asm_vmexit_handler)
-        push %rdi
-        push %rsi
-        push %rdx
-        push %rcx
-        push %rax
+        SAVE_ALL
+
         mov  %cr2,%rax
-        push %r8
-        push %r9
-        push %r10
-        push %r11
-        push %rbx
         GET_CURRENT(%rbx)
-        push %rbp
-        push %r12
-        push %r13
-        push %r14
-        push %r15
 
         movb $1,VCPU_vmx_launched(%rbx)
         mov  %rax,VCPU_hvm_guest_cr2(%rbx)