|
[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 |