From: Andrew Cooper Date: Thu, 17 Aug 2017 14:23:21 +0000 (+0100) Subject: x86/hvm: Use SAVE_ALL to construct the cpu_user_regs frame after VMExit X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~850 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=13682ca8c94bd5612a44f7f1edc1fd8ff675dacb;p=xen.git x86/hvm: Use SAVE_ALL to construct the cpu_user_regs frame after VMExit 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 Reviewed-by: Jan Beulich Reviewed-by: Wei Liu --- diff --git a/xen/arch/x86/hvm/svm/entry.S b/xen/arch/x86/hvm/svm/entry.S index 4a72e38e8b..df86da0a81 100644 --- a/xen/arch/x86/hvm/svm/entry.S +++ b/xen/arch/x86/hvm/svm/entry.S @@ -98,24 +98,10 @@ UNLIKELY_END(svm_trace) VMRUN - GET_CURRENT(ax) - 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(bx) + mov VCPU_svm_vmcb(%rbx),%rcx movb $0,VCPU_svm_vmcb_in_sync(%rbx) mov VMCB_rax(%rcx),%rax diff --git a/xen/arch/x86/hvm/vmx/entry.S b/xen/arch/x86/hvm/vmx/entry.S index 47cd674260..b2f98be7f5 100644 --- a/xen/arch/x86/hvm/vmx/entry.S +++ b/xen/arch/x86/hvm/vmx/entry.S @@ -30,23 +30,10 @@ #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(bx) - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 movb $1,VCPU_vmx_launched(%rbx) mov %rax,VCPU_hvm_guest_cr2(%rbx)