Skip to content

Commit b51f86e

Browse files
committed
Merge tag 'perf_urgent_for_v5.18_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fixes from Borislav Petkov: - A couple of fixes to cgroup-related handling of perf events - A couple of fixes to event encoding on Sapphire Rapids - Pass event caps of inherited events so that perf doesn't fail wrongly at fork() - Add support for a new Raptor Lake CPU * tag 'perf_urgent_for_v5.18_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/core: Always set cpuctx cgrp when enable cgroup event perf/core: Fix perf_cgroup_switch() perf/core: Use perf_cgroup_info->active to check if cgroup is active perf/core: Don't pass task around when ctx sched in perf/x86/intel: Update the FRONTEND MSR mask on Sapphire Rapids perf/x86/intel: Don't extend the pseudo-encoding to GP counters perf/core: Inherit event_caps perf/x86/uncore: Add Raptor Lake uncore support perf/x86/msr: Add Raptor Lake CPU support perf/x86/cstate: Add Raptor Lake support perf/x86: Add Intel Raptor Lake support
2 parents 50c94de + e19cd0b commit b51f86e

File tree

7 files changed

+101
-169
lines changed

7 files changed

+101
-169
lines changed

arch/x86/events/intel/core.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ static struct extra_reg intel_spr_extra_regs[] __read_mostly = {
302302
INTEL_UEVENT_EXTRA_REG(0x012a, MSR_OFFCORE_RSP_0, 0x3fffffffffull, RSP_0),
303303
INTEL_UEVENT_EXTRA_REG(0x012b, MSR_OFFCORE_RSP_1, 0x3fffffffffull, RSP_1),
304304
INTEL_UEVENT_PEBS_LDLAT_EXTRA_REG(0x01cd),
305-
INTEL_UEVENT_EXTRA_REG(0x01c6, MSR_PEBS_FRONTEND, 0x7fff17, FE),
305+
INTEL_UEVENT_EXTRA_REG(0x01c6, MSR_PEBS_FRONTEND, 0x7fff1f, FE),
306306
INTEL_UEVENT_EXTRA_REG(0x40ad, MSR_PEBS_FRONTEND, 0x7, FE),
307307
INTEL_UEVENT_EXTRA_REG(0x04c2, MSR_PEBS_FRONTEND, 0x8, FE),
308308
EVENT_EXTRA_END
@@ -5536,7 +5536,11 @@ static void intel_pmu_check_event_constraints(struct event_constraint *event_con
55365536
/* Disabled fixed counters which are not in CPUID */
55375537
c->idxmsk64 &= intel_ctrl;
55385538

5539-
if (c->idxmsk64 != INTEL_PMC_MSK_FIXED_REF_CYCLES)
5539+
/*
5540+
* Don't extend the pseudo-encoding to the
5541+
* generic counters
5542+
*/
5543+
if (!use_fixed_pseudo_encoding(c->code))
55405544
c->idxmsk64 |= (1ULL << num_counters) - 1;
55415545
}
55425546
c->idxmsk64 &=
@@ -6212,6 +6216,7 @@ __init int intel_pmu_init(void)
62126216

62136217
case INTEL_FAM6_ALDERLAKE:
62146218
case INTEL_FAM6_ALDERLAKE_L:
6219+
case INTEL_FAM6_RAPTORLAKE:
62156220
/*
62166221
* Alder Lake has 2 types of CPU, core and atom.
62176222
*

arch/x86/events/intel/cstate.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
* Model specific counters:
4141
* MSR_CORE_C1_RES: CORE C1 Residency Counter
4242
* perf code: 0x00
43-
* Available model: SLM,AMT,GLM,CNL,ICX,TNT,ADL
43+
* Available model: SLM,AMT,GLM,CNL,ICX,TNT,ADL,RPL
4444
* Scope: Core (each processor core has a MSR)
4545
* MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter
4646
* perf code: 0x01
@@ -51,49 +51,50 @@
5151
* perf code: 0x02
5252
* Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW,
5353
* SKL,KNL,GLM,CNL,KBL,CML,ICL,ICX,
54-
* TGL,TNT,RKL,ADL
54+
* TGL,TNT,RKL,ADL,RPL
5555
* Scope: Core
5656
* MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter
5757
* perf code: 0x03
5858
* Available model: SNB,IVB,HSW,BDW,SKL,CNL,KBL,CML,
59-
* ICL,TGL,RKL,ADL
59+
* ICL,TGL,RKL,ADL,RPL
6060
* Scope: Core
6161
* MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter.
6262
* perf code: 0x00
6363
* Available model: SNB,IVB,HSW,BDW,SKL,KNL,GLM,CNL,
64-
* KBL,CML,ICL,ICX,TGL,TNT,RKL,ADL
64+
* KBL,CML,ICL,ICX,TGL,TNT,RKL,ADL,
65+
* RPL
6566
* Scope: Package (physical package)
6667
* MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter.
6768
* perf code: 0x01
6869
* Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL,
6970
* GLM,CNL,KBL,CML,ICL,TGL,TNT,RKL,
70-
* ADL
71+
* ADL,RPL
7172
* Scope: Package (physical package)
7273
* MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter.
7374
* perf code: 0x02
7475
* Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW,
7576
* SKL,KNL,GLM,CNL,KBL,CML,ICL,ICX,
76-
* TGL,TNT,RKL,ADL
77+
* TGL,TNT,RKL,ADL,RPL
7778
* Scope: Package (physical package)
7879
* MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter.
7980
* perf code: 0x03
8081
* Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,CNL,
81-
* KBL,CML,ICL,TGL,RKL,ADL
82+
* KBL,CML,ICL,TGL,RKL,ADL,RPL
8283
* Scope: Package (physical package)
8384
* MSR_PKG_C8_RESIDENCY: Package C8 Residency Counter.
8485
* perf code: 0x04
8586
* Available model: HSW ULT,KBL,CNL,CML,ICL,TGL,RKL,
86-
* ADL
87+
* ADL,RPL
8788
* Scope: Package (physical package)
8889
* MSR_PKG_C9_RESIDENCY: Package C9 Residency Counter.
8990
* perf code: 0x05
9091
* Available model: HSW ULT,KBL,CNL,CML,ICL,TGL,RKL,
91-
* ADL
92+
* ADL,RPL
9293
* Scope: Package (physical package)
9394
* MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter.
9495
* perf code: 0x06
9596
* Available model: HSW ULT,KBL,GLM,CNL,CML,ICL,TGL,
96-
* TNT,RKL,ADL
97+
* TNT,RKL,ADL,RPL
9798
* Scope: Package (physical package)
9899
*
99100
*/
@@ -680,6 +681,7 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {
680681
X86_MATCH_INTEL_FAM6_MODEL(ROCKETLAKE, &icl_cstates),
681682
X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, &adl_cstates),
682683
X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, &adl_cstates),
684+
X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, &adl_cstates),
683685
{ },
684686
};
685687
MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match);

arch/x86/events/intel/uncore.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1828,6 +1828,7 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = {
18281828
X86_MATCH_INTEL_FAM6_MODEL(ROCKETLAKE, &rkl_uncore_init),
18291829
X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, &adl_uncore_init),
18301830
X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, &adl_uncore_init),
1831+
X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, &adl_uncore_init),
18311832
X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X, &spr_uncore_init),
18321833
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &snr_uncore_init),
18331834
{},

arch/x86/events/intel/uncore_snb.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@
7979
#define PCI_DEVICE_ID_INTEL_ADL_14_IMC 0x4650
8080
#define PCI_DEVICE_ID_INTEL_ADL_15_IMC 0x4668
8181
#define PCI_DEVICE_ID_INTEL_ADL_16_IMC 0x4670
82+
#define PCI_DEVICE_ID_INTEL_RPL_1_IMC 0xA700
83+
#define PCI_DEVICE_ID_INTEL_RPL_2_IMC 0xA702
84+
#define PCI_DEVICE_ID_INTEL_RPL_3_IMC 0xA706
85+
#define PCI_DEVICE_ID_INTEL_RPL_4_IMC 0xA709
8286

8387
/* SNB event control */
8488
#define SNB_UNC_CTL_EV_SEL_MASK 0x000000ff
@@ -1406,6 +1410,22 @@ static const struct pci_device_id tgl_uncore_pci_ids[] = {
14061410
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ADL_16_IMC),
14071411
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
14081412
},
1413+
{ /* IMC */
1414+
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_RPL_1_IMC),
1415+
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
1416+
},
1417+
{ /* IMC */
1418+
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_RPL_2_IMC),
1419+
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
1420+
},
1421+
{ /* IMC */
1422+
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_RPL_3_IMC),
1423+
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
1424+
},
1425+
{ /* IMC */
1426+
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_RPL_4_IMC),
1427+
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
1428+
},
14091429
{ /* end: all zeroes */ }
14101430
};
14111431

arch/x86/events/msr.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ static bool test_intel(int idx, void *data)
103103
case INTEL_FAM6_ROCKETLAKE:
104104
case INTEL_FAM6_ALDERLAKE:
105105
case INTEL_FAM6_ALDERLAKE_L:
106+
case INTEL_FAM6_RAPTORLAKE:
106107
if (idx == PERF_MSR_SMI || idx == PERF_MSR_PPERF)
107108
return true;
108109
break;

arch/x86/include/asm/perf_event.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,11 @@ struct x86_pmu_capability {
241241
#define INTEL_PMC_IDX_FIXED_SLOTS (INTEL_PMC_IDX_FIXED + 3)
242242
#define INTEL_PMC_MSK_FIXED_SLOTS (1ULL << INTEL_PMC_IDX_FIXED_SLOTS)
243243

244+
static inline bool use_fixed_pseudo_encoding(u64 code)
245+
{
246+
return !(code & 0xff);
247+
}
248+
244249
/*
245250
* We model BTS tracing as another fixed-mode PMC.
246251
*

0 commit comments

Comments
 (0)