[PATCH v6 52/90] x86/cpu/intel: Use parsed CPUID(0xa)
From: Ahmed S. Darwish
Date: Thu Mar 26 2026 - 22:31:56 EST
For Intel's PMU enumeration, use parsed CPUID(0xa) instead of a CPUID query
and ugly bitwise operations.
Remove comments; the generated bitfield names already make everything clear.
Signed-off-by: Ahmed S. Darwish <darwi@xxxxxxxxxxxxx>
---
arch/x86/kernel/cpu/intel.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index 615e3a4872b7..7f186c68d701 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -547,18 +547,16 @@ static const struct x86_cpu_id zmm_exclusion_list[] = {
static void init_intel(struct cpuinfo_x86 *c)
{
+ const struct leaf_0xa_0 *la = cpuid_leaf(c, 0xa);
+
early_init_intel(c);
intel_workarounds(c);
init_intel_cacheinfo(c);
- if (c->cpuid_level > 9) {
- unsigned eax = cpuid_eax(10);
- /* Check for version and the number of counters */
- if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
- set_cpu_cap(c, X86_FEATURE_ARCH_PERFMON);
- }
+ if (la && la->pmu_version && la->num_counters_gp > 1)
+ set_cpu_cap(c, X86_FEATURE_ARCH_PERFMON);
if (cpu_has(c, X86_FEATURE_XMM2))
set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
--
2.53.0