mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-04 13:34:11 -04:00
Merge tag 'perf-core-2026-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull performance event updates from Ingo Molnar:
"x86 PMU driver updates:
- Add support for the core PMU for Intel Diamond Rapids (DMR) CPUs
(Dapeng Mi)
Compared to previous iterations of the Intel PMU code, there's been
a lot of changes, which center around three main areas:
- Introduce the OFF-MODULE RESPONSE (OMR) facility to replace the
Off-Core Response (OCR) facility
- New PEBS data source encoding layout
- Support the new "RDPMC user disable" feature
- Likewise, a large series adds uncore PMU support for Intel Diamond
Rapids (DMR) CPUs (Zide Chen)
This centers around these four main areas:
- DMR may have two Integrated I/O and Memory Hub (IMH) dies,
separate from the compute tile (CBB) dies. Each CBB and each IMH
die has its own discovery domain.
- Unlike prior CPUs that retrieve the global discovery table
portal exclusively via PCI or MSR, DMR uses PCI for IMH PMON
discovery and MSR for CBB PMON discovery.
- DMR introduces several new PMON types: SCA, HAMVF, D2D_ULA, UBR,
PCIE4, CRS, CPC, ITC, OTC, CMS, and PCIE6.
- IIO free-running counters in DMR are MMIO-based, unlike SPR.
- Also add support for Add missing PMON units for Intel Panther Lake,
and support Nova Lake (NVL), which largely maps to Panther Lake.
(Zide Chen)
- KVM integration: Add support for mediated vPMUs (by Kan Liang and
Sean Christopherson, with fixes and cleanups by Peter Zijlstra,
Sandipan Das and Mingwei Zhang)
- Add Intel cstate driver to support for Wildcat Lake (WCL) CPUs,
which are a low-power variant of Panther Lake (Zide Chen)
- Add core, cstate and MSR PMU support for the Airmont NP Intel CPU
(aka MaxLinear Lightning Mountain), which maps to the existing
Airmont code (Martin Schiller)
Performance enhancements:
- Speed up kexec shutdown by avoiding unnecessary cross CPU calls
(Jan H. Schönherr)
- Fix slow perf_event_task_exit() with LBR callstacks (Namhyung Kim)
User-space stack unwinding support:
- Various cleanups and refactorings in preparation to generalize the
unwinding code for other architectures (Jens Remus)
Uprobes updates:
- Transition from kmap_atomic to kmap_local_page (Keke Ming)
- Fix incorrect lockdep condition in filter_chain() (Breno Leitao)
- Fix XOL allocation failure for 32-bit tasks (Oleg Nesterov)
Misc fixes and cleanups:
- s390: Remove kvm_types.h from Kbuild (Randy Dunlap)
- x86/intel/uncore: Convert comma to semicolon (Chen Ni)
- x86/uncore: Clean up const mismatch (Greg Kroah-Hartman)
- x86/ibs: Fix typo in dc_l2tlb_miss comment (Xiang-Bin Shi)"
* tag 'perf-core-2026-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (58 commits)
s390: remove kvm_types.h from Kbuild
uprobes: Fix incorrect lockdep condition in filter_chain()
x86/ibs: Fix typo in dc_l2tlb_miss comment
x86/uprobes: Fix XOL allocation failure for 32-bit tasks
perf/x86/intel/uncore: Convert comma to semicolon
perf/x86/intel: Add support for rdpmc user disable feature
perf/x86: Use macros to replace magic numbers in attr_rdpmc
perf/x86/intel: Add core PMU support for Novalake
perf/x86/intel: Add support for PEBS memory auxiliary info field in NVL
perf/x86/intel: Add core PMU support for DMR
perf/x86/intel: Add support for PEBS memory auxiliary info field in DMR
perf/x86/intel: Support the 4 new OMR MSRs introduced in DMR and NVL
perf/core: Fix slow perf_event_task_exit() with LBR callstacks
perf/core: Speed up kexec shutdown by avoiding unnecessary cross CPU calls
uprobes: use kmap_local_page() for temporary page mappings
arm/uprobes: use kmap_local_page() in arch_uprobe_copy_ixol()
mips/uprobes: use kmap_local_page() in arch_uprobe_copy_ixol()
arm64/uprobes: use kmap_local_page() in arch_uprobe_copy_ixol()
riscv/uprobes: use kmap_local_page() in arch_uprobe_copy_ixol()
perf/x86/intel/uncore: Add Nova Lake support
...
This commit is contained in:
@@ -1330,14 +1330,16 @@ union perf_mem_data_src {
|
||||
mem_snoopx : 2, /* Snoop mode, ext */
|
||||
mem_blk : 3, /* Access blocked */
|
||||
mem_hops : 3, /* Hop level */
|
||||
mem_rsvd : 18;
|
||||
mem_region : 5, /* cache/memory regions */
|
||||
mem_rsvd : 13;
|
||||
};
|
||||
};
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
union perf_mem_data_src {
|
||||
__u64 val;
|
||||
struct {
|
||||
__u64 mem_rsvd : 18,
|
||||
__u64 mem_rsvd : 13,
|
||||
mem_region : 5, /* cache/memory regions */
|
||||
mem_hops : 3, /* Hop level */
|
||||
mem_blk : 3, /* Access blocked */
|
||||
mem_snoopx : 2, /* Snoop mode, ext */
|
||||
@@ -1394,7 +1396,7 @@ union perf_mem_data_src {
|
||||
#define PERF_MEM_LVLNUM_L4 0x0004 /* L4 */
|
||||
#define PERF_MEM_LVLNUM_L2_MHB 0x0005 /* L2 Miss Handling Buffer */
|
||||
#define PERF_MEM_LVLNUM_MSC 0x0006 /* Memory-side Cache */
|
||||
/* 0x007 available */
|
||||
#define PERF_MEM_LVLNUM_L0 0x0007 /* L0 */
|
||||
#define PERF_MEM_LVLNUM_UNC 0x0008 /* Uncached */
|
||||
#define PERF_MEM_LVLNUM_CXL 0x0009 /* CXL */
|
||||
#define PERF_MEM_LVLNUM_IO 0x000a /* I/O */
|
||||
@@ -1447,6 +1449,25 @@ union perf_mem_data_src {
|
||||
/* 5-7 available */
|
||||
#define PERF_MEM_HOPS_SHIFT 43
|
||||
|
||||
/* Cache/Memory region */
|
||||
#define PERF_MEM_REGION_NA 0x0 /* Invalid */
|
||||
#define PERF_MEM_REGION_RSVD 0x01 /* Reserved */
|
||||
#define PERF_MEM_REGION_L_SHARE 0x02 /* Local CA shared cache */
|
||||
#define PERF_MEM_REGION_L_NON_SHARE 0x03 /* Local CA non-shared cache */
|
||||
#define PERF_MEM_REGION_O_IO 0x04 /* Other CA IO agent */
|
||||
#define PERF_MEM_REGION_O_SHARE 0x05 /* Other CA shared cache */
|
||||
#define PERF_MEM_REGION_O_NON_SHARE 0x06 /* Other CA non-shared cache */
|
||||
#define PERF_MEM_REGION_MMIO 0x07 /* MMIO */
|
||||
#define PERF_MEM_REGION_MEM0 0x08 /* Memory region 0 */
|
||||
#define PERF_MEM_REGION_MEM1 0x09 /* Memory region 1 */
|
||||
#define PERF_MEM_REGION_MEM2 0x0a /* Memory region 2 */
|
||||
#define PERF_MEM_REGION_MEM3 0x0b /* Memory region 3 */
|
||||
#define PERF_MEM_REGION_MEM4 0x0c /* Memory region 4 */
|
||||
#define PERF_MEM_REGION_MEM5 0x0d /* Memory region 5 */
|
||||
#define PERF_MEM_REGION_MEM6 0x0e /* Memory region 6 */
|
||||
#define PERF_MEM_REGION_MEM7 0x0f /* Memory region 7 */
|
||||
#define PERF_MEM_REGION_SHIFT 46
|
||||
|
||||
#define PERF_MEM_S(a, s) \
|
||||
(((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user