[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 15/22] x86/VPMU: use macros for max supported VPMU version
From: Edwin Török <edvin.torok@xxxxxxxxxx> This ensures consistency between the 2 pieces of code that check for VPMU version. No functional change. Signed-off-by: Edwin Török <edvin.torok@xxxxxxxxxx> --- xen/arch/x86/cpu/vpmu_intel.c | 20 ++++++-------------- xen/arch/x86/include/asm/vpmu.h | 1 + 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c index 4c0776cee7..82cd2656ea 100644 --- a/xen/arch/x86/cpu/vpmu_intel.c +++ b/xen/arch/x86/cpu/vpmu_intel.c @@ -810,7 +810,7 @@ static int cf_check core2_vpmu_initialise(struct vcpu *v) static bool_t ds_warned; if ( v->domain->arch.cpuid->basic.pmu_version <= 1 || - v->domain->arch.cpuid->basic.pmu_version >= 6 ) + v->domain->arch.cpuid->basic.pmu_version >= VPMU_VERSION_MAX_SUPPORTED ) return -EINVAL; if ( (arch_pmc_cnt + fixed_pmc_cnt) == 0 ) @@ -890,22 +890,14 @@ const struct arch_vpmu_ops *__init core2_vpmu_init(void) if ( current_cpu_data.cpuid_level >= 0xa ) version = MASK_EXTR(cpuid_eax(0xa), PMU_VERSION_MASK); - switch ( version ) - { - case 4: - case 5: - printk(XENLOG_INFO "VPMU: PMU version %u is not fully supported. " - "Emulating version 3\n", version); - /* FALLTHROUGH */ - - case 2: - case 3: - break; - - default: + if ( version <= 1 || + version > VPMU_VERSION_MAX_SUPPORTED ) { printk(XENLOG_WARNING "VPMU: PMU version %u is not supported\n", version); return ERR_PTR(-EINVAL); + } else if ( version > VPMU_VERSION_MAX ) { + printk(XENLOG_INFO "VPMU: PMU version %u is not fully supported. " + "Emulating version %d\n", version, VPMU_VERSION_MAX); } if ( current_cpu_data.x86 != 6 ) diff --git a/xen/arch/x86/include/asm/vpmu.h b/xen/arch/x86/include/asm/vpmu.h index 49c3e8c19a..79f7f4a09e 100644 --- a/xen/arch/x86/include/asm/vpmu.h +++ b/xen/arch/x86/include/asm/vpmu.h @@ -75,6 +75,7 @@ struct vpmu_struct { #define VPMU_CPU_HAS_BTS 0x2000 /* Has Branch Trace Store */ #define VPMU_VERSION_MAX 0x3 +#define VPMU_VERSION_MAX_SUPPORTED 0x5 static inline void vpmu_set(struct vpmu_struct *vpmu, const u32 mask) { -- 2.41.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |