|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/3] x86/VPMU: Support only versions 2 through 4 of architectural performance monitoring
>>> On 01.12.15 at 17:50, <boris.ostrovsky@xxxxxxxxxx> wrote:
> @@ -746,6 +746,13 @@ static void core2_vpmu_do_cpuid(unsigned int input,
> if ( cpu_has(¤t_cpu_data, X86_FEATURE_DSCPL) )
> *ecx |= cpufeat_mask(X86_FEATURE_DSCPL);
> }
> + break;
> +
> + case 0xa:
> + /* Since we don't fully emulate version 4 report version 3 */
> + if ( MASK_EXTR(*eax, PMU_VERSION_MASK) == 4 )
Considering that this may not be what physical CPUID returned, I
think you'd better use >= here.
> @@ -955,59 +962,25 @@ int vmx_vpmu_initialise(struct vcpu *v)
> int __init core2_vpmu_init(void)
> {
> u64 caps;
> + unsigned int version = 0;
>
> - if ( current_cpu_data.x86 != 6 )
> + if ( current_cpu_data.cpuid_level >= 0xa )
> + version = MASK_EXTR(cpuid_eax(0xa), PMU_VERSION_MASK);
> +
> + if ( version == 4 )
> + printk(XENLOG_INFO "VPMU: PMU version 4 is not fully supported. "
> + "Emulating version 3\n");
> + else if ( (version != 2) && (version != 3) )
> {
> - printk(XENLOG_WARNING "VPMU: only family 6 is supported\n");
> + printk(XENLOG_WARNING "VPMU: PMU version %u is not supported\n",
> + version);
> return -EINVAL;
> }
I'd appreciate if you would use switch() here.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |