Skip to content

Commit 2b3b76b

Browse files
Kan LiangIngo Molnar
authored andcommitted
perf/x86/intel/uncore: Add Ice Lake server uncore support
The uncore subsystem in Ice Lake server is similar to previous server. There are some differences in config register encoding and pci device IDs. The uncore PMON units in Ice Lake server include Ubox, Chabox, IIO, IRP, M2PCIE, PCU, M2M, PCIE3 and IMC. - For CHA, filter 1 register has been removed. The filter 0 register can be used by and of CHA events to be filterd by Thread/Core-ID. To do so, the control register's tid_en bit must be set to 1. - For IIO, there are some changes on event constraints. The MSR address and MSR offsets among counters are also changed. - For IRP, the MSR address and MSR offsets among counters are changed. - For M2PCIE, the counters are accessed by MSR now. Add new MSR address and MSR offsets. Change event constraints. - To determine the number of CHAs, have to read CAPID6(Low) and CAPID7 (High) now. - For M2M, update the PCICFG address and Device ID. - For UPI, update the PCICFG address, Device ID and counter address. - For M3UPI, update the PCICFG address, Device ID, counter address and event constraints. - For IMC, update the formular to calculate MMIO BAR address, which is MMIO_BASE + specific MEM_BAR offset. Signed-off-by: Kan Liang <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Signed-off-by: Ingo Molnar <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
1 parent 24fb6b8 commit 2b3b76b

File tree

3 files changed

+522
-0
lines changed

3 files changed

+522
-0
lines changed

arch/x86/events/intel/uncore.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,6 +1476,12 @@ static const struct intel_uncore_init_fun tgl_l_uncore_init __initconst = {
14761476
.mmio_init = tgl_l_uncore_mmio_init,
14771477
};
14781478

1479+
static const struct intel_uncore_init_fun icx_uncore_init __initconst = {
1480+
.cpu_init = icx_uncore_cpu_init,
1481+
.pci_init = icx_uncore_pci_init,
1482+
.mmio_init = icx_uncore_mmio_init,
1483+
};
1484+
14791485
static const struct intel_uncore_init_fun snr_uncore_init __initconst = {
14801486
.cpu_init = snr_uncore_cpu_init,
14811487
.pci_init = snr_uncore_pci_init,
@@ -1511,6 +1517,8 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = {
15111517
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_uncore_init),
15121518
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_NNPI, &icl_uncore_init),
15131519
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &icl_uncore_init),
1520+
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_D, &icx_uncore_init),
1521+
X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_X, &icx_uncore_init),
15141522
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &tgl_l_uncore_init),
15151523
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, &tgl_uncore_init),
15161524
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &snr_uncore_init),

arch/x86/events/intel/uncore.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,9 @@ void skx_uncore_cpu_init(void);
550550
int snr_uncore_pci_init(void);
551551
void snr_uncore_cpu_init(void);
552552
void snr_uncore_mmio_init(void);
553+
int icx_uncore_pci_init(void);
554+
void icx_uncore_cpu_init(void);
555+
void icx_uncore_mmio_init(void);
553556

554557
/* uncore_nhmex.c */
555558
void nhmex_uncore_cpu_init(void);

0 commit comments

Comments
 (0)