Re: [PATCH 6.6.y] perf/x86/intel: Fix ARCH_PERFMON_NUM_COUNTER_LEAF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ 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@xxxxxxxxxxxxxxx
     
      ## 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   |




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux