Messages in this thread |  | | Date | Tue, 2 Dec 2025 08:19:56 -0800 | | Subject | Re: [PATCH v14 17/32] x86,fs/resctrl: Fill in details of events for guid 0x26696143 and 0x26557651 | | From | Reinette Chatre <> |
| |
Hi Tony,
On 11/24/25 10:53 AM, Tony Luck wrote: > The telemetry event aggregators of the Intel Clearwater Forest CPU support > two RMID-based feature types: "energy" with guid 0x26696143 [1], and "perf" > with guid 0x26557651 [2]. > > The event counter offsets in an aggregator's MMIO space are arranged in > groups for each RMID. > > E.g the "energy" counters for guid 0x26696143 are arranged like this: > > MMIO offset:0x0000 Counter for RMID 0 PMT_EVENT_ENERGY > MMIO offset:0x0008 Counter for RMID 0 PMT_EVENT_ACTIVITY > MMIO offset:0x0010 Counter for RMID 1 PMT_EVENT_ENERGY > MMIO offset:0x0018 Counter for RMID 1 PMT_EVENT_ACTIVITY > ... > MMIO offset:0x23F0 Counter for RMID 575 PMT_EVENT_ENERGY > MMIO offset:0x23F8 Counter for RMID 575 PMT_EVENT_ACTIVITY > > After all counters there are three status registers that provide > indications of how many times an aggregator was unable to process > event counts, the time stamp for the most recent loss of data, and > the time stamp of the most recent successful update.
(line length)
> > MMIO offset:0x2400 AGG_DATA_LOSS_COUNT > MMIO offset:0x2408 AGG_DATA_LOSS_TIMESTAMP > MMIO offset:0x2410 LAST_UPDATE_TIMESTAMP > > Define event_group structures for both of these events and define the events
" these events " -> "these aggregator types"?
> tracked by the aggregators in the file system code. > > PMT_EVENT_ENERGY and PMT_EVENT_ACTIVITY are produced in fixed point > format. File system code must output as floating point values. > > Signed-off-by: Tony Luck <tony.luck@intel.com> > Link: https://github.com/intel/Intel-PMT/blob/main/xml/CWF/OOBMSM/RMID-ENERGY/cwf_aggregator.xml # [1] > Link: https://github.com/intel/Intel-PMT/blob/main/xml/CWF/OOBMSM/RMID-PERF/cwf_aggregator.xml # [2] > --- > include/linux/resctrl_types.h | 11 ++++ > arch/x86/kernel/cpu/resctrl/intel_aet.c | 67 +++++++++++++++++++++++++ > fs/resctrl/monitor.c | 35 +++++++------ > 3 files changed, 98 insertions(+), 15 deletions(-) > > diff --git a/include/linux/resctrl_types.h b/include/linux/resctrl_types.h > index acfe07860b34..a5f56faa18d2 100644 > --- a/include/linux/resctrl_types.h > +++ b/include/linux/resctrl_types.h > @@ -50,6 +50,17 @@ enum resctrl_event_id { > QOS_L3_MBM_TOTAL_EVENT_ID = 0x02, > QOS_L3_MBM_LOCAL_EVENT_ID = 0x03, > > + /* Intel Telemetry Events */ > + PMT_EVENT_ENERGY, > + PMT_EVENT_ACTIVITY, > + PMT_EVENT_STALLS_LLC_HIT, > + PMT_EVENT_C1_RES, > + PMT_EVENT_UNHALTED_CORE_CYCLES, > + PMT_EVENT_STALLS_LLC_MISS, > + PMT_EVENT_AUTO_C6_RES, > + PMT_EVENT_UNHALTED_REF_CYCLES, > + PMT_EVENT_UOPS_RETIRED, > + > /* 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 5d34c7349b02..bb080bdde190 100644 > --- a/arch/x86/kernel/cpu/resctrl/intel_aet.c > +++ b/arch/x86/kernel/cpu/resctrl/intel_aet.c > @@ -13,6 +13,7 @@ > > #include <linux/array_size.h> > #include <linux/cleanup.h> > +#include <linux/compiler_types.h> > #include <linux/cpu.h> > #include <linux/err.h> > #include <linux/init.h> > @@ -20,11 +21,27 @@ > #include <linux/intel_vsec.h> > #include <linux/overflow.h> > #include <linux/resctrl.h> > +#include <linux/resctrl_types.h> > #include <linux/stddef.h> > #include <linux/types.h> > > #include "internal.h" > > +/** > + * struct pmt_event - Telemetry event. > + * @id: Resctrl event id. > + * @idx: Counter index within each per-RMID block of counters. > + * @bin_bits: Zero for integer valued events, else number bits in fraction > + * part of fixed-point. > + */ > +struct pmt_event { > + enum resctrl_event_id id; > + unsigned int idx; > + unsigned int bin_bits; > +}; > + > +#define EVT(_id, _idx, _bits) { .id = _id, .idx = _idx, .bin_bits = _bits } > + > /** > * struct event_group - Events with the same feature type ("energy" or "perf") and guid. > * @feature: Type of events, for example FEATURE_PER_RMID_PERF_TELEM or > @@ -35,14 +52,64 @@ > * data for all telemetry regions type @feature. > * Valid if the system supports the event group. > * NULL otherwise. > + * @guid: Unique number per XML description file. > + * @mmio_size: Number of bytes of MMIO registers for this group. > + * @num_events: Number of events in this group. > + * @evts: Array of event descriptors. > */ > struct event_group { > /* Data fields for additional structures to manage this group. */ > enum pmt_feature_id feature; > struct pmt_feature_group *pfg; > + > + /* Remaining fields initialized from XML file. */ > + u32 guid; > + size_t mmio_size; > + unsigned int num_events; > + struct pmt_event evts[] __counted_by(num_events); > +}; > + > +#define XML_MMIO_SIZE(num_rmids, num_events, num_extra_status) \ > + (((num_rmids) * (num_events) + (num_extra_status)) * sizeof(u64)) > + > +/* > + * Link: https://github.com/intel/Intel-PMT > + * File: xml/CWF/OOBMSM/RMID-ENERGY/cwf_aggregator.xml
Can these links be fixed also? Appending the "File" to "Link" results in invalid url.
> + */ > +static struct event_group energy_0x26696143 = { > + .feature = FEATURE_PER_RMID_ENERGY_TELEM, > + .guid = 0x26696143, > + .mmio_size = XML_MMIO_SIZE(576, 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 > + * File: xml/CWF/OOBMSM/RMID-PERF/cwf_aggregator.xml
same here.
> + */ > +static struct event_group perf_0x26557651 = { > + .feature = FEATURE_PER_RMID_PERF_TELEM, > + .guid = 0x26557651, > + .mmio_size = XML_MMIO_SIZE(576, 7, 3), > + .num_events = 7, > + .evts = { > + EVT(PMT_EVENT_STALLS_LLC_HIT, 0, 0), > + EVT(PMT_EVENT_C1_RES, 1, 0), > + EVT(PMT_EVENT_UNHALTED_CORE_CYCLES, 2, 0), > + EVT(PMT_EVENT_STALLS_LLC_MISS, 3, 0), > + EVT(PMT_EVENT_AUTO_C6_RES, 4, 0), > + EVT(PMT_EVENT_UNHALTED_REF_CYCLES, 5, 0), > + EVT(PMT_EVENT_UOPS_RETIRED, 6, 0), > + } > }; > > static struct event_group *known_event_groups[] = { > + &energy_0x26696143, > + &perf_0x26557651, > }; > > #define for_each_event_group(_peg) \
Reinette
|  |