[PATCH] x86,fs/resctrl: Add event_group information for Intel Diamond Rapids
From: Tony Luck
Date: Mon Sep 21 2026 - 17:35:17 EST
Intel published XML descriptions for the Application Energy Telemetry
events on Diamond Rapids here: https://github.com/intel/Intel-PMT.
Add event_group structures for both new GUIDs.
There are two new "perf" events. Add them to the resctrl file system.
Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
---
include/linux/resctrl_types.h | 2 ++
arch/x86/kernel/cpu/resctrl/intel_aet.c | 34 +++++++++++++++++++++++++
fs/resctrl/monitor.c | 2 ++
3 files changed, 38 insertions(+)
diff --git a/include/linux/resctrl_types.h b/include/linux/resctrl_types.h
index a5f56faa18d2..e2e2cf3d9ff6 100644
--- a/include/linux/resctrl_types.h
+++ b/include/linux/resctrl_types.h
@@ -60,6 +60,8 @@ enum resctrl_event_id {
PMT_EVENT_AUTO_C6_RES,
PMT_EVENT_UNHALTED_REF_CYCLES,
PMT_EVENT_UOPS_RETIRED,
+ PMT_EVENT_INST_RETIRED,
+ PMT_EVENT_PCNT,
/* Must be the last */
QOS_NUM_EVENTS,
diff --git a/arch/x86/kernel/cpu/resctrl/intel_aet.c b/arch/x86/kernel/cpu/resctrl/intel_aet.c
index c22c3cf5167d..3555b0aa33ce 100644
--- a/arch/x86/kernel/cpu/resctrl/intel_aet.c
+++ b/arch/x86/kernel/cpu/resctrl/intel_aet.c
@@ -125,9 +125,43 @@ static struct event_group perf_0x26557651 = {
}
};
+/*
+ * Link: https://github.com/intel/Intel-PMT/blob/main/xml/DMR/OOBMSM/RMID-ENERGY/dmr_aggregator.xml
+ */
+static struct event_group energy_0x47903099 = {
+ .pfname = "energy",
+ .guid = 0x47903099,
+ .num_rmid = 256,
+ .mmio_size = XML_MMIO_SIZE(256, 2, 3),
+ .num_events = 2,
+ .evts = {
+ EVT(PMT_EVENT_ENERGY, 0, 18),
+ EVT(PMT_EVENT_ACTIVITY, 1, 18),
+ }
+};
+
+/*
+ * Link: https://github.com/intel/Intel-PMT/blob/main/xml/DMR/OOBMSM/RMID-PERF/dmr_aggregator.xml
+ */
+static struct event_group perf_0x1415910A = {
+ .pfname = "perf",
+ .guid = 0x1415910A,
+ .num_rmid = 256,
+ .mmio_size = XML_MMIO_SIZE(256, 4, 3),
+ .num_events = 4,
+ .evts = {
+ EVT(PMT_EVENT_UNHALTED_REF_CYCLES, 0, 0),
+ EVT(PMT_EVENT_UNHALTED_CORE_CYCLES, 1, 0),
+ EVT(PMT_EVENT_INST_RETIRED, 2, 0),
+ EVT(PMT_EVENT_PCNT, 3, 0),
+ }
+};
+
static struct event_group *known_event_groups[] = {
&energy_0x26696143,
+ &energy_0x47903099,
&perf_0x26557651,
+ &perf_0x1415910A,
};
#define for_each_event_group(_peg) \
diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c
index 73413cb128ea..04e4ea612b7c 100644
--- a/fs/resctrl/monitor.c
+++ b/fs/resctrl/monitor.c
@@ -1041,6 +1041,8 @@ struct mon_evt mon_event_all[QOS_NUM_EVENTS] = {
MON_EVENT(PMT_EVENT_AUTO_C6_RES, "c6_res", RDT_RESOURCE_PERF_PKG, false),
MON_EVENT(PMT_EVENT_UNHALTED_REF_CYCLES, "unhalted_ref_cycles", RDT_RESOURCE_PERF_PKG, false),
MON_EVENT(PMT_EVENT_UOPS_RETIRED, "uops_retired", RDT_RESOURCE_PERF_PKG, false),
+ MON_EVENT(PMT_EVENT_INST_RETIRED, "inst_retired", RDT_RESOURCE_PERF_PKG, false),
+ MON_EVENT(PMT_EVENT_PCNT, "pcnt", RDT_RESOURCE_PERF_PKG, false),
};
bool resctrl_enable_mon_event(enum resctrl_event_id eventid, bool any_cpu,
--
2.55.0