Hi Reinette, On 2/6/25 12:48, Reinette Chatre wrote: > Hi Babu, > > On 1/22/25 12:20 PM, Babu Moger wrote: >> When mbm_cntr_assign mode is enabled, users can designate which of the MBM >> events in the CTRL_MON or MON groups should have counters assigned. >> >> Provide an interface for assigning MBM events by writing to the file: >> /sys/fs/resctrl/info/L3_MON/mbm_assign_control. Using this interface, >> events can be assigned or unassigned as needed. >> >> Format is similar to the list format with addition of opcode for the >> assignment operation. >> "<CTRL_MON group>/<MON group>/<domain_id><opcode><flags>" >> >> Format for specific type of groups: >> >> * Default CTRL_MON group: >> "//<domain_id><opcode><flags>" >> >> * Non-default CTRL_MON group: >> "<CTRL_MON group>//<domain_id><opcode><flags>" >> >> * Child MON group of default CTRL_MON group: >> "/<MON group>/<domain_id><opcode><flags>" >> >> * Child MON group of non-default CTRL_MON group: >> "<CTRL_MON group>/<MON group>/<domain_id><opcode><flags>" >> >> Domain_id '*' will apply the flags on all the domains. >> >> Opcode can be one of the following: >> >> = Update the assignment to match the flags >> + Assign a new MBM event without impacting existing assignments. >> - Unassign a MBM event from currently assigned events. >> >> Assignment flags can be one of the following: >> t MBM total event >> l MBM local event >> tl Both total and local MBM events >> _ None of the MBM events. Valid only with '=' opcode. This flag cannot >> be combined with other flags. >> >> Signed-off-by: Babu Moger <babu.moger@xxxxxxx> >> --- >> v11: Fixed the static check warning with initializing dom_id in resctrl_process_flags(). >> >> v10: Fixed the issue with finding the domain in multiple iterations. >> Printed error message with domain information when assign fails. >> Changed the variables to unsigned for processing assign state. >> Taken care of few format corrections. >> >> v9: Fixed handling special case '//0=' and '//". >> Removed extra strstr() call. >> Added generic failure text when assignment operation fails. >> Corrected user documentation format texts. >> >> v8: Moved unassign as the first action during the assign modification. >> Assign none "_" takes priority. Cannot be mixed with other flags. >> Updated the documentation and .rst file format. htmldoc looks ok. >> >> v7: Simplified the parsing (strsep(&token, "//") in rdtgroup_mbm_assign_control_write(). >> Added mutex lock in rdtgroup_mbm_assign_control_write() while processing. >> Renamed rdtgroup_find_grp to rdtgroup_find_grp_by_name. >> Fixed rdtgroup_str_to_mon_state to return error for invalid flags. >> Simplified the calls rdtgroup_assign_cntr by merging few functions earlier. >> Removed ABMC reference in FS code. >> Reinette commented about handling the combination of flags like 'lt_' and '_lt'. >> Not sure if we need to change the behaviour here. Processed them sequencially right now. >> Users have the liberty to pass the flags. Restricting it might be a problem later. >> >> v6: Added support assign all if domain id is '*' >> Fixed the allocation of counter id if it not assigned already. >> >> v5: Interface name changed from mbm_assign_control to mbm_control. >> Fixed opcode and flags combination. >> '=_" is valid. >> "-_" amd "+_" is not valid. >> Minor message update. >> Renamed the function with prefix - rdtgroup_. >> Corrected few documentation mistakes. >> Rebase related changes after SNC support. >> >> v4: Added domain specific assignments. Fixed the opcode parsing. >> >> v3: New patch. >> Addresses the feedback to provide the global assignment interface. >> --- >> Documentation/arch/x86/resctrl.rst | 116 +++++++++++- >> arch/x86/kernel/cpu/resctrl/internal.h | 10 + >> arch/x86/kernel/cpu/resctrl/rdtgroup.c | 241 ++++++++++++++++++++++++- >> 3 files changed, 365 insertions(+), 2 deletions(-) >> >> diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst >> index 3040e5c4cd76..47e15b48d951 100644 >> --- a/Documentation/arch/x86/resctrl.rst >> +++ b/Documentation/arch/x86/resctrl.rst >> @@ -356,7 +356,8 @@ with the following files: >> t MBM total event is assigned. >> l MBM local event is assigned. >> tl Both MBM total and local events are assigned. >> - _ None of the MBM events are assigned. >> + _ None of the MBM events are assigned. Only works with opcode '=' for write >> + and cannot be combined with other flags. >> >> Examples: >> :: >> @@ -374,6 +375,119 @@ with the following files: >> There are four resctrl groups. All the groups have total and local MBM events >> assigned on domain 0 and 1. >> >> + Assignment state can be updated by writing to "mbm_assign_control". >> + >> + Format is similar to the list format with addition of opcode for the >> + assignment operation. >> + >> + "<CTRL_MON group>/<MON group>/<domain_id><opcode><flags>" >> + >> + Format for each type of group: >> + >> + * Default CTRL_MON group: >> + "//<domain_id><opcode><flags>" >> + >> + * Non-default CTRL_MON group: >> + "<CTRL_MON group>//<domain_id><opcode><flags>" >> + >> + * Child MON group of default CTRL_MON group: >> + "/<MON group>/<domain_id><opcode><flags>" >> + >> + * Child MON group of non-default CTRL_MON group: >> + "<CTRL_MON group>/<MON group>/<domain_id><opcode><flags>" >> + >> + Domain_id '*' will apply the flags to all the domains. >> + >> + Opcode can be one of the following: >> + :: >> + >> + = Update the assignment to match the MBM event. >> + + Assign a new MBM event without impacting existing assignments. >> + - Unassign a MBM event from currently assigned events. >> + >> + Examples: >> + Initial group status: >> + :: >> + >> + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + non_default_ctrl_mon_grp//0=tl;1=tl >> + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=tl >> + //0=tl;1=tl >> + /child_default_mon_grp/0=tl;1=tl >> + >> + To update the default group to assign only total MBM event on domain 0: >> + :: >> + >> + # echo "//0=t" > /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + >> + Assignment status after the update: >> + :: >> + >> + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + non_default_ctrl_mon_grp//0=tl;1=tl >> + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=tl >> + //0=t;1=tl >> + /child_default_mon_grp/0=tl;1=tl >> + >> + To update the MON group child_default_mon_grp to remove total MBM event on domain 1: >> + :: >> + >> + # echo "/child_default_mon_grp/1-t" > /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + >> + Assignment status after the update: >> + :: >> + >> + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + non_default_ctrl_mon_grp//0=tl;1=tl >> + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=tl >> + //0=t;1=tl >> + /child_default_mon_grp/0=tl;1=l >> + >> + To update the MON group non_default_ctrl_mon_grp/child_non_default_mon_grp to unassign >> + both local and total MBM events on domain 1: >> + :: >> + >> + # echo "non_default_ctrl_mon_grp/child_non_default_mon_grp/1=_" > >> + /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + >> + Assignment status after the update: >> + :: >> + >> + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control >> + non_default_ctrl_mon_grp//0=tl;1=tl >> + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=tl;1=_ >> + //0=t;1=tl >> + /child_default_mon_grp/0=tl;1=l >> + >> + To update the default group to add a local MBM event domain 0: > > "local MBM event domain 0" -> "local MBM event on domain 0"? Sure. > > Taking a step back to look at the completed "mbm_assign_control" section > it is noteworthy that all this work is about assigning counters to events > but after this large section is complete the word "counter" does not appear > a single time. > > The section starts with a brief: > "Reports the resctrl group and monitor status of each group." and then > moves to terms like "assigning events"/"assignment status" without defining > what that means. > > Instead of rewriting this, what do you think of adding some definition > of what "assignment state" means to the start of the section. For example, > (I am sure it can be improved): > > "Use "mbm_assign_control" to manage monitoring counter assignment to > monitoring events when mbm_cntr_assign_mode is enabled." Sure. -- Thanks Babu Moger