From: Andrew Cooper Date: Mon, 9 Apr 2018 17:56:03 +0000 (+0100) Subject: x86/VT-x: Fix determination of EFER.LMA in vmcs_dump_vcpu() X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~200 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=82540b66ceb9318aa185f2488cbbbe479694de8f;p=xen.git x86/VT-x: Fix determination of EFER.LMA in vmcs_dump_vcpu() The LMA setting comes from the entry controls. Signed-off-by: Andrew Cooper Acked-by: Kevin Tian Release-acked-by: Juergen Gross --- diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 2c5ef36e5e..70c2fb7482 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -1788,7 +1788,10 @@ void vmcs_dump_vcpu(struct vcpu *v) vmentry_ctl = vmr32(VM_ENTRY_CONTROLS), vmexit_ctl = vmr32(VM_EXIT_CONTROLS); cr4 = vmr(GUEST_CR4); - efer = vmr(GUEST_EFER); + + /* EFER.LMA is read as zero, and is loaded from vmentry_ctl on entry. */ + BUILD_BUG_ON(VM_ENTRY_IA32E_MODE << 1 != EFER_LMA); + efer = vmr(GUEST_EFER) | ((vmentry_ctl & VM_ENTRY_IA32E_MODE) << 1); printk("*** Guest State ***\n"); printk("CR0: actual=0x%016lx, shadow=0x%016lx, gh_mask=%016lx\n",