Hi Reinette, On 7/17/25 22:55, Reinette Chatre wrote: > Hi Babu, > > On 7/8/25 3:17 PM, Babu Moger wrote: >> The "mbm_event" counter assignment mode allows the user to assign a >> hardware counter to an RMID, event pair and monitor the bandwidth as long >> as it is assigned. The user can specify the memory transaction(s) for the >> counter to track. >> >> Add the definitions for supported memory transactions (e.g., read, write, >> etc.) the counter can be configured with. >> >> Signed-off-by: Babu Moger <babu.moger@xxxxxxx> >> --- > > ... > >> --- >> fs/resctrl/internal.h | 11 +++++++++++ >> fs/resctrl/monitor.c | 11 +++++++++++ >> include/linux/resctrl_types.h | 3 +++ >> 3 files changed, 25 insertions(+) >> >> diff --git a/fs/resctrl/internal.h b/fs/resctrl/internal.h >> index fb4fec4a4cdc..63526400e632 100644 >> --- a/fs/resctrl/internal.h >> +++ b/fs/resctrl/internal.h >> @@ -216,6 +216,17 @@ struct rdtgroup { >> struct pseudo_lock_region *plr; >> }; >> >> +/** >> + * struct mbm_transaction - Memory transaction an MBM event can be configured with. >> + * @name: Name of memory transaction (read, write ...). >> + * @val: The bit used to represent the memory transaction within an >> + * event's configuration. > > Please include something similar to the mon_evt::evt_cfg kernel-doc to help reader > know where bit values come from. For example, > > * @val: The bit (eg. READS_TO_LOCAL_MEM or READS_TO_REMOTE_MEM) used to represent > * the memory transaction within an event's configuration. > Sure. >> + */ >> +struct mbm_transaction { >> + char name[32]; >> + u32 val; >> +}; >> + >> /* rdtgroup.flags */ >> #define RDT_DELETED 1 >> >> diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c >> index 35faca7ff3b1..1670163649e7 100644 >> --- a/fs/resctrl/monitor.c >> +++ b/fs/resctrl/monitor.c >> @@ -920,6 +920,17 @@ u32 resctrl_get_mon_evt_cfg(enum resctrl_event_id evtid) >> return mon_event_all[evtid].evt_cfg; >> } >> >> +/* Decoded values for each type of memory transactions */ > > "transactions" -> "transaction."? > Sure. >> +struct mbm_transaction mbm_transactions[NUM_MBM_TRANSACTIONS] = { >> + {"local_reads", READS_TO_LOCAL_MEM}, >> + {"remote_reads", READS_TO_REMOTE_MEM}, >> + {"local_non_temporal_writes", NON_TEMP_WRITE_TO_LOCAL_MEM}, >> + {"remote_non_temporal_writes", NON_TEMP_WRITE_TO_REMOTE_MEM}, >> + {"local_reads_slow_memory", READS_TO_LOCAL_S_MEM}, >> + {"remote_reads_slow_memory", READS_TO_REMOTE_S_MEM}, >> + {"dirty_victim_writes_all", DIRTY_VICTIMS_TO_ALL_MEM}, >> +}; >> + >> /** >> * resctrl_mon_resource_init() - Initialise global monitoring structures. >> * >> diff --git a/include/linux/resctrl_types.h b/include/linux/resctrl_types.h >> index d98351663c2c..acfe07860b34 100644 >> --- a/include/linux/resctrl_types.h >> +++ b/include/linux/resctrl_types.h >> @@ -34,6 +34,9 @@ >> /* Max event bits supported */ >> #define MAX_EVT_CONFIG_BITS GENMASK(6, 0) >> >> +/* Number of memory transactions that an MBM event can be configured with */ >> +#define NUM_MBM_TRANSACTIONS 7 >> + >> /* Event IDs */ >> enum resctrl_event_id { >> /* Must match value of first event below */ > > Reinette > -- Thanks Babu Moger