]> xenbits.xensource.com Git - people/andrewcoop/xen.git/commitdiff
x86/VT-x: Fix determination of EFER.LMA in vmcs_dump_vcpu()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 18 Apr 2018 14:50:55 +0000 (16:50 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 18 Apr 2018 14:50:55 +0000 (16:50 +0200)
The LMA setting comes from the entry controls.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
master commit: 82540b66ceb9318aa185f2488cbbbe479694de8f
master date: 2018-04-11 11:06:55 +0100

xen/arch/x86/hvm/vmx/vmcs.c

index 8d7bd7b2267f6ddc0c68a00cac37af70226d946b..98a601f7fda3aebaa01a7bdecc3865471ca6e4c5 100644 (file)
@@ -1780,7 +1780,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",