|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 2/6] x86/msr: add VMX MSRs into struct msr_domain_policy
On Mon, 2017-10-16 at 15:01 +0100, Andrew Cooper wrote:
> On 16/10/17 08:42, Sergey Dyasli wrote:
> > +
> > + secondary_available =
> > + dp->vmx_procbased_ctls.u.allowed_1.activate_secondary_controls;
> > +
> > + switch (msr)
> > + {
> > + case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMCS_ENUM:
> > + return true;
> > +
> > + case MSR_IA32_VMX_PROCBASED_CTLS2:
> > + return secondary_available;
> > +
> > + case MSR_IA32_VMX_EPT_VPID_CAP:
> > + return ( secondary_available &&
> > + (dp->vmx_procbased_ctls2.u.allowed_1.enable_ept ||
> > + dp->vmx_procbased_ctls2.u.allowed_1.enable_vpid) );
>
> This check can be made more efficient in two ways. First, use a bitwise
> rather than logical or, which allows both _ept and _vpid to be tested
> with a single instruction, rather than a conditional branch.
But it's compiler's job to optimize conditions like that.
I'm getting the following asm:
if ( dp->vmx_procbased_ctls2.allowed_1.enable_ept ||
ffff82d08027bc3d: 48 c1 e8 20 shr $0x20,%rax
ffff82d08027bc41: a8 22 test $0x22,%al
ffff82d08027bc43: 74 0d je ffff82d08027bc52
<recalculate_domain_vmx_msr_policy+0x196>
And "test $0x22" is exactly the test for "enable_ept || enable_vpid"
with a single instruction.
--
Thanks,
Sergey
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |