|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/3] Nested VMX: Fix IA32_VMX_CR4_FIXED1 msr emulation
>>> On 10.09.13 at 08:14, Yang Zhang <yang.z.zhang@xxxxxxxxx> wrote:
> + hvm_cpuid(0x0, &eax, &ebx, &ecx, &edx);
> + if ( eax >= 0xa )
> + {
> + hvm_cpuid(0xa, &eax, &ebx, &ecx, &edx);
> + /* Check whether guest has the perf monitor feature. */
> + if ( (eax & 0xff) && (eax & 0xff00) )
> + data |= X86_CR4_PCE;
> + }
> + else if ( eax >= 0x7 )
> + {
> + hvm_cpuid(0x7, &eax, &ebx, &ecx, &edx);
> + if ( ebx & cpufeat_mask(X86_FEATURE_FSGSBASE) )
> + data |= X86_CR4_FSGSBASE;
> + if ( ebx & cpufeat_mask(X86_FEATURE_SMEP) )
> + data |= X86_CR4_SMEP;
> + if ( ebx & cpufeat_mask(X86_FEATURE_SMAP) )
> + data |= X86_CR4_SMAP;
> + }
I told you on v1 already that if/else-if doesn't work here: If the
maximum leaf is 10 or higher, the last three bits will never get
set. Either you need to retain the use of another variable for the
maximum leaf, or (my preference) you need to use a switch
statement with suitably annotated fall through.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |