[ Sasha's backport helper bot ]
Hi,
Summary of potential issues: ⚠️ Found matching upstream commit but patch is missing proper reference to it
Found matching upstream commit: 47a973fd75639fe80d59f9e1860113bb2a0b112b
Note: The patch differs from the upstream commit: --- 1: 47a973fd75639 ! 1: 23cc70d16b75c perf/x86/intel: Fix ARCH_PERFMON_NUM_COUNTER_LEAF @@ Commit message Link: https://lkml.kernel.org/r/20250129154820.3755948-3-kan.liang@linux.intel.com
## arch/x86/events/intel/core.c ## -@@ arch/x86/events/intel/core.c: static inline bool intel_pmu_broken_perf_cap(void) +@@ arch/x86/events/intel/core.c: static void intel_pmu_check_num_counters(int *num_counters,
static void update_pmu_cap(struct x86_hybrid_pmu *pmu) { -- unsigned int sub_bitmaps, eax, ebx, ecx, edx; +- unsigned int sub_bitmaps = cpuid_eax(ARCH_PERFMON_EXT_LEAF); +- unsigned int eax, ebx, ecx, edx; + unsigned int cntr, fixed_cntr, ecx, edx; + union cpuid35_eax eax; + union cpuid35_ebx ebx;
-- cpuid(ARCH_PERFMON_EXT_LEAF, &sub_bitmaps, &ebx, &ecx, &edx); -+ cpuid(ARCH_PERFMON_EXT_LEAF, &eax.full, &ebx.full, &ecx, &edx); - -- if (ebx & ARCH_PERFMON_EXT_UMASK2) -+ if (ebx.split.umask2) - pmu->config_mask |= ARCH_PERFMON_EVENTSEL_UMASK2; -- if (ebx & ARCH_PERFMON_EXT_EQ) -+ if (ebx.split.eq) - pmu->config_mask |= ARCH_PERFMON_EVENTSEL_EQ; - - if (sub_bitmaps & ARCH_PERFMON_NUM_COUNTER_LEAF_BIT) { ++ cpuid(ARCH_PERFMON_EXT_LEAF, &eax.full, &ebx.full, &ecx, &edx); ++ + if (eax.split.cntr_subleaf) { cpuid_count(ARCH_PERFMON_EXT_LEAF, ARCH_PERFMON_NUM_COUNTER_LEAF, - &eax, &ebx, &ecx, &edx); -- pmu->cntr_mask64 = eax; -- pmu->fixed_cntr_mask64 = ebx; +- pmu->num_counters = fls(eax); +- pmu->num_counters_fixed = fls(ebx); + &cntr, &fixed_cntr, &ecx, &edx); -+ pmu->cntr_mask64 = cntr; -+ pmu->fixed_cntr_mask64 = fixed_cntr; ++ pmu->num_counters = fls(cntr); ++ pmu->num_counters_fixed = fls(fixed_cntr); + intel_pmu_check_num_counters(&pmu->num_counters, &pmu->num_counters_fixed, +- &pmu->intel_ctrl, ebx); ++ &pmu->intel_ctrl, fixed_cntr); } + }
- if (!intel_pmu_broken_perf_cap()) {
## arch/x86/include/asm/perf_event.h ## @@ arch/x86/include/asm/perf_event.h: union cpuid10_edx { * detection/enumeration details: */ #define ARCH_PERFMON_EXT_LEAF 0x00000023 --#define ARCH_PERFMON_EXT_UMASK2 0x1 --#define ARCH_PERFMON_EXT_EQ 0x2 -#define ARCH_PERFMON_NUM_COUNTER_LEAF_BIT 0x1 #define ARCH_PERFMON_NUM_COUNTER_LEAF 0x1
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.6.y | Success | Success |