[GIT PULL] perf event updates for v6.2

From: Ingo Molnar
Date: Mon Dec 12 2022 - 15:35:18 EST


Linus,

Please pull the latest perf/core git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-core-2022-12-12

# HEAD: 17b8d847b92d815d1638f0de154654081d66b281 perf/x86/intel/uncore: Fix reference count leak in __uncore_imc_init_box()

[ Conflict heads-up: there's going to be a trivial conflict in
kernel/events/core.c when pulling this into your v6.1+ tree. ]

Perf events updates for v6.2:

- Thoroughly rewrite the data structures that implement perf task context handling,
with the goal of fixing various quirks and unfeatures both in already merged,
and in upcoming proposed code.

The old data structure is the per task and per cpu perf_event_contexts:

task_struct::perf_events_ctxp[] <-> perf_event_context <-> perf_cpu_context
^ | ^ | ^
`---------------------------------' | `--> pmu ---'
v ^
perf_event ------'

In this new design this is replaced with a single task context and
a single CPU context, plus intermediate data-structures:

task_struct::perf_event_ctxp -> perf_event_context <- perf_cpu_context
^ | ^ ^
`---------------------------' | |
| | perf_cpu_pmu_context <--.
| `----. ^ |
| | | |
| v v |
| ,--> perf_event_pmu_context |
| | |
| | |
v v |
perf_event ---> pmu ----------------'

[ See commit bd2756811766 for more details. ]

This rewrite was developed by Peter Zijlstra and Ravi Bangoria.

- Optimize perf_tp_event()

- Update the Intel uncore PMU driver, extending it with UPI topology discovery
on various hardware models.

- Misc fixes & cleanups

Thanks,

Ingo

------------------>
Alexander Antonov (11):
perf/x86/intel/uncore: Generalize IIO topology support
perf/x86/intel/uncore: Introduce UPI topology type
perf/x86/intel/uncore: Clear attr_update properly
perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D
perf/x86/intel/uncore: Generalize get_topology() for SKX PMUs
perf/x86/intel/uncore: Enable UPI topology discovery for Skylake Server
perf/x86/intel/uncore: Get UPI NodeID and GroupID
perf/x86/intel/uncore: Enable UPI topology discovery for Icelake Server
perf/x86/intel/uncore: Enable UPI topology discovery for Sapphire Rapids
perf/x86/intel/uncore: Update sysfs-devices-mapping file
perf/x86/intel/uncore: Make set_mapping() procedure void

Chen Zhongjin (1):
perf: Fix possible memleak in pmu_dev_alloc()

Colin Ian King (1):
perf: Remove unused pointer task_ctx

Gaosheng Cui (1):
perf: Fix IS_ERR() vs NULL check in inherit_event()

Peter Zijlstra (2):
perf: Rewrite core context handling
perf: Fix function pointer case

Rafael Mendonca (1):
perf/x86: Remove unused variable 'cpu_type'

Ravi Bangoria (3):
perf: Optimize perf_tp_event()
perf/amd/ibs: Make IBS a core pmu
perf/core: Don't allow grouping events from different hw pmus

Shaokun Zhang (1):
perf/x86/amd: Remove the repeated declaration

Xiongfeng Wang (4):
perf/x86/intel/uncore: Fix reference count leak in sad_cfg_iio_topology()
perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
perf/x86/intel/uncore: Fix reference count leak in snr_uncore_mmio_map()
perf/x86/intel/uncore: Fix reference count leak in __uncore_imc_init_box()


Documentation/ABI/testing/sysfs-devices-mapping | 30 +-
arch/arm64/kernel/perf_event.c | 18 +-
arch/powerpc/perf/core-book3s.c | 8 +-
arch/s390/kernel/perf_pai_crypto.c | 2 +-
arch/s390/kernel/perf_pai_ext.c | 2 +-
arch/x86/events/amd/brs.c | 2 +-
arch/x86/events/amd/ibs.c | 4 +-
arch/x86/events/amd/lbr.c | 6 +-
arch/x86/events/core.c | 48 +-
arch/x86/events/intel/core.c | 23 +-
arch/x86/events/intel/ds.c | 4 +-
arch/x86/events/intel/lbr.c | 30 +-
arch/x86/events/intel/uncore.h | 24 +-
arch/x86/events/intel/uncore_snb.c | 3 +
arch/x86/events/intel/uncore_snbep.c | 495 +++++-
arch/x86/events/perf_event.h | 31 +-
drivers/perf/arm_pmu.c | 16 +-
include/linux/perf/arm_pmu.h | 2 +-
include/linux/perf_event.h | 125 +-
include/linux/sched.h | 2 +-
kernel/events/core.c | 2120 ++++++++++++-----------
21 files changed, 1765 insertions(+), 1230 deletions(-)