[PATCH V2 00/13] Add DMR/NVL and missing PTL uncore support

Zide Chen posted 13 patches 1 month, 1 week ago
arch/x86/events/intel/uncore.c           | 142 +++--
arch/x86/events/intel/uncore.h           |  26 +
arch/x86/events/intel/uncore_discovery.c |  78 ++-
arch/x86/events/intel/uncore_discovery.h |   8 +-
arch/x86/events/intel/uncore_snb.c       |  85 +++
arch/x86/events/intel/uncore_snbep.c     | 690 ++++++++++++++++-------
tools/perf/util/pmu.c                    |  14 +-
7 files changed, 735 insertions(+), 308 deletions(-)
[PATCH V2 00/13] Add DMR/NVL and missing PTL uncore support
Posted by Zide Chen 1 month, 1 week ago
Similar to Sapphire Rapids, Diamond Rapids (DMR) relies on discovery
tables for uncore enumeration. Key differences and additions include:

- 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.

The uncore driver currently does not clear the freeze_all bit in the
Global Control Register.  On platforms where it is set at power-on,
some units may not be enabled if they lack a per-unit enable bit.

Patch series overview:
- Patch 1–3, 7, 9: Cleanup or preparatory patches
- Patch 4–6, 8, 10–11: DMR uncore support
- Patch 12: Add missing PTL PMON units
- Patch 13: NVL uncore support

V2:
- Introduce struct uncore_discovery_domain[] to allow multiple
  discovery base, and each could be either an MSR or a PCI device.
- Add global_init() callback.
- Add missing format_attr_umask in dmr_imc_uncore_formats_attr[].
- Address Dapeng’s comments.
- Add new patches for PTL and NVL uncore support.

V1: https://lore.kernel.org/linux-perf-users/20251212210007.13986-1-zide.chen@intel.com/

Zide Chen (13):
  perf/x86/intel/uncore: Move uncore discovery init struct to header
  perf/x86/intel/uncore: Support per-platform discovery base devices
  perf/x86/intel/uncore: Remove has_generic_discovery_table()
  perf/x86/intel/uncore: Add IMH PMON support for Diamond Rapids
  perf/x86/intel/uncore: Add CBB PMON support for Diamond Rapids
  perf/x86/intel/uncore: Add domain global init callback
  perf/x86/intel/uncore: Add freerunning event descriptor helper macro
  perf/x86/intel/uncore: Support IIO free-running counters on DMR
  perf/x86/intel/uncore: Support uncore constraint ranges
  perf/x86/intel/uncore: Update DMR uncore constraints preliminarily
  perf pmu: Relax uncore wildcard matching to allow numeric suffix
  perf/x86/intel/uncore: Add missing PMON units for Panther Lake
  perf/x86/intel/uncore: Add Nova Lake support

 arch/x86/events/intel/uncore.c           | 142 +++--
 arch/x86/events/intel/uncore.h           |  26 +
 arch/x86/events/intel/uncore_discovery.c |  78 ++-
 arch/x86/events/intel/uncore_discovery.h |   8 +-
 arch/x86/events/intel/uncore_snb.c       |  85 +++
 arch/x86/events/intel/uncore_snbep.c     | 690 ++++++++++++++++-------
 tools/perf/util/pmu.c                    |  14 +-
 7 files changed, 735 insertions(+), 308 deletions(-)

-- 
2.52.0

Re: [PATCH V2 00/13] Add DMR/NVL and missing PTL uncore support
Posted by Peter Zijlstra 1 month ago
On Wed, Dec 31, 2025 at 02:42:17PM -0800, Zide Chen wrote:

> Zide Chen (13):
>   perf/x86/intel/uncore: Move uncore discovery init struct to header
>   perf/x86/intel/uncore: Support per-platform discovery base devices
>   perf/x86/intel/uncore: Remove has_generic_discovery_table()
>   perf/x86/intel/uncore: Add IMH PMON support for Diamond Rapids
>   perf/x86/intel/uncore: Add CBB PMON support for Diamond Rapids
>   perf/x86/intel/uncore: Add domain global init callback
>   perf/x86/intel/uncore: Add freerunning event descriptor helper macro
>   perf/x86/intel/uncore: Support IIO free-running counters on DMR
>   perf/x86/intel/uncore: Support uncore constraint ranges
>   perf/x86/intel/uncore: Update DMR uncore constraints preliminarily
>   perf pmu: Relax uncore wildcard matching to allow numeric suffix
>   perf/x86/intel/uncore: Add missing PMON units for Panther Lake
>   perf/x86/intel/uncore: Add Nova Lake support

Thanks, pushed out to queue/perf/core for the robots to have a go.

I made a few minor edits, the biggest of which I already shared in a
reply.
Re: [PATCH V2 00/13] Add DMR/NVL and missing PTL uncore support
Posted by Chen, Zide 1 month ago

On 1/6/2026 7:08 AM, Peter Zijlstra wrote:
> On Wed, Dec 31, 2025 at 02:42:17PM -0800, Zide Chen wrote:
> 
>> Zide Chen (13):
>>   perf/x86/intel/uncore: Move uncore discovery init struct to header
>>   perf/x86/intel/uncore: Support per-platform discovery base devices
>>   perf/x86/intel/uncore: Remove has_generic_discovery_table()
>>   perf/x86/intel/uncore: Add IMH PMON support for Diamond Rapids
>>   perf/x86/intel/uncore: Add CBB PMON support for Diamond Rapids
>>   perf/x86/intel/uncore: Add domain global init callback
>>   perf/x86/intel/uncore: Add freerunning event descriptor helper macro
>>   perf/x86/intel/uncore: Support IIO free-running counters on DMR
>>   perf/x86/intel/uncore: Support uncore constraint ranges
>>   perf/x86/intel/uncore: Update DMR uncore constraints preliminarily
>>   perf pmu: Relax uncore wildcard matching to allow numeric suffix
>>   perf/x86/intel/uncore: Add missing PMON units for Panther Lake
>>   perf/x86/intel/uncore: Add Nova Lake support
> 
> Thanks, pushed out to queue/perf/core for the robots to have a go.
> 
> I made a few minor edits, the biggest of which I already shared in a
> reply.

Thank you very much!