On Thu, Mar 28, 2024 at 08:06:50PM -0500, Babu Moger wrote: > Introduce rdtgroup_mbm_assign_control_write to assign mbm events. > Assignment state can be updated by writing to this interface. > Assignment states are applied on all the domains. Assignment on one > domain applied on all the domains. User can pass one valid domain and > assignment will be updated on all the available domains. > > Format is similar to the list format with addition of op-code for the > assignment operation. > > * Default CTRL_MON group: > "//<domain_id><op-code><assignment_flags>" > > * Non-default CTRL_MON group: > "<CTRL_MON group>//<domain_id><op-code><assignment_flags>" > > * Child MON group of default CTRL_MON group: > "/<MON group>/<domain_id><op-code><assignment_flags>" > > * Child MON group of non-default CTRL_MON group: > "<CTRL_MON group>/<MON group>/<domain_id><op-code><assignment_flags>" > > Op-code can be one of the following: > > = Update the assignment to match the flags > + Assign a new state > - Unassign a new state > _ Unassign all the states > > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> > --- > > v3: New patch. > Addresses the feedback to provide the global assignment interface. > https://lore.kernel.org/lkml/c73f444b-83a1-4e9a-95d3-54c5165ee782@xxxxxxxxx/ > --- > Documentation/arch/x86/resctrl.rst | 71 ++++++++ > arch/x86/kernel/cpu/resctrl/rdtgroup.c | 236 ++++++++++++++++++++++++- > 2 files changed, 306 insertions(+), 1 deletion(-) > > diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst > index 2d96565501ab..64ec70637c66 100644 > --- a/Documentation/arch/x86/resctrl.rst > +++ b/Documentation/arch/x86/resctrl.rst > @@ -328,6 +328,77 @@ with the following files: > None of events are assigned on this mon group. This is a child > monitor group of the non default control mon group. > > + Assignment state can be updated by writing to this interface. > + > + NOTE: Assignment on one domain applied on all the domains. User can > + pass one valid domain and assignment will be updated on all the > + available domains. > + > + Format is similar to the list format with addition of op-code for the > + assignment operation. > + > + * Default CTRL_MON group: > + "//<domain_id><op-code><assignment_flags>" > + > + * Non-default CTRL_MON group: > + "<CTRL_MON group>//<domain_id><op-code><assignment_flags>" > + > + * Child MON group of default CTRL_MON group: > + "/<MON group>/<domain_id><op-code><assignment_flags>" > + > + * Child MON group of non-default CTRL_MON group: > + "<CTRL_MON group>/<MON group>/<domain_id><op-code><assignment_flags>" The final bullet seems to cover everything, if we allow <CTRL_MON group> and <MON group> to be independently empty strings to indicate the default control and/or monitoring group respectively. Would that be simpler than treating this as four separate cases? Also, will this go wrong if someone creates a resctrl group with '\n' (i.e., a newline character) in the name? > + > + Op-code can be one of the following: > + :: > + > + = Update the assignment to match the flags > + + Assign a new state > + - Unassign a new state > + _ Unassign all the states I can't remember whether I already asked this, but is "_" really needed here? Wouldn't it be the case that //*_ would mean just the same thing as //*=_ ...? (assuming the "*" = "all domains" convention already discussed) Maybe I'm missing something here. [...] Cheers ---Dave