[GIT PULL] Performance events changes for v6.13

From: Ingo Molnar
Date: Mon Nov 18 2024 - 12:30:25 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-2024-11-18

# HEAD: 2c47e7a74f445426d156278e339b7abb259e50de perf/core: Correct perf sampling with guest VMs

Performance events changes for v6.13:

- Uprobes:
- Add BPF session support (Jiri Olsa)
- Switch to RCU Tasks Trace flavor for better performance (Andrii Nakryiko)
- Massively increase uretprobe SMP scalability by SRCU-protecting
the uretprobe lifetime (Andrii Nakryiko)
- Kill xol_area->slot_count (Oleg Nesterov)

- Core facilities:
- Implement targeted high-frequency profiling by adding the ability
for an event to "pause" or "resume" AUX area tracing (Adrian Hunter)

- VM profiling/sampling:
- Correct perf sampling with guest VMs (Colton Lewis)

- New hardware support:
- x86/intel: Add PMU support for Intel ArrowLake-H CPUs (Dapeng Mi)

- Misc fixes and enhancements:
- x86/intel/pt: Fix buffer full but size is 0 case (Adrian Hunter)
- x86/amd: Warn only on new bits set (Breno Leitao)
- x86/amd/uncore: Avoid a false positive warning about snprintf
truncation in amd_uncore_umc_ctx_init (Jean Delvare)
- uprobes: Re-order struct uprobe_task to save some space (Christophe JAILLET)
- x86/rapl: Move the pmu allocation out of CPU hotplug (Kan Liang)
- x86/rapl: Clean up cpumask and hotplug (Kan Liang)
- uprobes: Deuglify xol_get_insn_slot/xol_free_insn_slot paths (Oleg Nesterov)

Thanks,

Ingo

------------------>
Adrian Hunter (4):
perf/x86/intel/pt: Fix buffer full but size is 0 case
perf/core: Add aux_pause, aux_resume, aux_start_paused
perf/x86/intel/pt: Add support for pause / resume
perf/x86/intel: Do not enable large PEBS for events with aux actions or aux sampling

Andrii Nakryiko (3):
uprobes: switch to RCU Tasks Trace flavor for better performance
uprobes: allow put_uprobe() from non-sleepable softirq context
uprobes: SRCU-protect uretprobe lifetime (with timeout)

Breno Leitao (1):
perf/x86/amd: Warn only on new bits set

Christophe JAILLET (1):
uprobes: Re-order struct uprobe_task to save some space

Colton Lewis (5):
perf/arm: Drop unused functions
perf/core: Hoist perf_instruction_pointer() and perf_misc_flags()
perf/powerpc: Use perf_arch_instruction_pointer()
perf/x86: Refactor misc flag assignments
perf/core: Correct perf sampling with guest VMs

Dapeng Mi (4):
perf/x86: Refine hybrid_pmu_type defination
x86/cpu/intel: Define helper to get CPU core native ID
perf/x86/intel: Support hybrid PMU with multiple atom uarchs
perf/x86/intel: Add PMU support for ArrowLake-H

Jean Delvare (1):
perf/x86/amd/uncore: Avoid a false positive warning about snprintf truncation in amd_uncore_umc_ctx_init

Jiri Olsa (2):
uprobe: Add data pointer to consumer handlers
uprobe: Add support for session consumer

Kan Liang (2):
perf/x86/rapl: Move the pmu allocation out of CPU hotplug
perf/x86/rapl: Clean up cpumask and hotplug

Oleg Nesterov (9):
uprobes: don't abuse get_utask() in pre_ssout() and prepare_uretprobe()
uprobes: sanitiize xol_free_insn_slot()
uprobes: kill the unnecessary put_uprobe/xol_free_insn_slot in uprobe_free_utask()
uprobes: simplify xol_take_insn_slot() and its caller
uprobes: move the initialization of utask->xol_vaddr from pre_ssout() to xol_get_insn_slot()
uprobes: pass utask to xol_get_insn_slot() and xol_free_insn_slot()
uprobes: deny mremap(xol_vma)
uprobes: kill xol_area->slot_count
uprobes: fold xol_take_insn_slot() into xol_get_insn_slot()


arch/Kconfig | 1 +
arch/arm/include/asm/perf_event.h | 7 -
arch/arm/kernel/perf_callchain.c | 17 -
arch/arm64/include/asm/perf_event.h | 4 -
arch/arm64/kernel/perf_callchain.c | 28 -
arch/powerpc/include/asm/perf_event_server.h | 6 +-
arch/powerpc/perf/callchain.c | 2 +-
arch/powerpc/perf/callchain_32.c | 2 +-
arch/powerpc/perf/callchain_64.c | 2 +-
arch/powerpc/perf/core-book3s.c | 4 +-
arch/s390/include/asm/perf_event.h | 6 +-
arch/s390/kernel/perf_event.c | 4 +-
arch/x86/events/amd/core.c | 10 +-
arch/x86/events/amd/uncore.c | 5 +-
arch/x86/events/core.c | 64 ++-
arch/x86/events/intel/core.c | 137 ++++-
arch/x86/events/intel/ds.c | 21 +
arch/x86/events/intel/pt.c | 84 ++-
arch/x86/events/intel/pt.h | 6 +
arch/x86/events/perf_event.h | 34 +-
arch/x86/events/rapl.c | 130 ++---
arch/x86/include/asm/cpu.h | 6 +
arch/x86/include/asm/perf_event.h | 12 +-
arch/x86/kernel/cpu/intel.c | 15 +
include/linux/cpuhotplug.h | 1 -
include/linux/perf_event.h | 54 +-
include/linux/uprobes.h | 83 ++-
include/uapi/linux/perf_event.h | 11 +-
kernel/events/core.c | 102 +++-
kernel/events/internal.h | 1 +
kernel/events/uprobes.c | 608 +++++++++++++++------
kernel/trace/bpf_trace.c | 6 +-
kernel/trace/trace_uprobe.c | 12 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 2 +-
34 files changed, 1069 insertions(+), 418 deletions(-)