|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.11] x86/VT-x: Fix determination of EFER.LMA in vmcs_dump_vcpu()
>>> On 09.04.18 at 19:56, <andrew.cooper3@xxxxxxxxxx> wrote:
> --- 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);
I have to admit that - despite the BUILD_BUG_ON() - I dislike the
literal 1 here, which would better be
(_EFER_LMA - _VM_ENTRY_IA32E_MODE), albeit the latter doesn't
exist, so perhaps
efer = vmr(GUEST_EFER) | ((vmentry_ctl & VM_ENTRY_IA32E_MODE) * (EFER_LMA /
VM_ENTRY_IA32E_MODE));
or the same expressed through MASK_EXTR() / MASK_INSR()? But
it's the VMX maintainers to judge anyway.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |