Re: [PATCH v4 3/7] fs/resctrl: Disallow the software controller when MBM counters are assignable

From: Ben Horgan

Date: Fri Mar 27 2026 - 13:31:21 EST


Hi Reinette,

On 3/27/26 16:14, Reinette Chatre wrote:
> Hi Ben,
>
> On 3/26/26 10:25 AM, Ben Horgan wrote:
>> The software controller requires that for each MBA control there is one MBM
>
> Could you please elaborate the "for each MBA control" distinction here?

I was referring to the per-control per-domain configurable bandwidth but perhaps
it's clearer to just drop "for each MBA control" from the sentence.

>
>> counter per monitor group that is assigned to the event backing the
>> software controller, as per mba_MBps_event. When mbm_event mode is in use,
>> it is not guaranteed that any particular event will have an assigned
>> counter.
>>
>> Currently, only AMD systems support counter assignment, but the MBA delay
>> is non-linear and so the software controller is never supported anyway. On
>> MPAM systems, the MBA delay is linear and so the software controller could
>> be supported. The MPAM driver, unless a need arises, will not support the
>> 'default' mbm_assign_mode and will always use the 'mbm_event' mode for
>> memory bandwidth monitoring.
>>
>> Rather than develop a way to guarantee the counter assignment requirements
>> needed by the software controller, take the pragmatic approach. Don't allow
>> the software controller to be used at the same time as 'mbm_event' mode. As
>> MPAM is the only relevant architecture and it will use 'mbm_event' mode
>> whenever there are assignable MBM counters, for simplicity's sake, don't
>> allow the software controller when the MBM counters are assignable.
>>
>> Implement this by failing the mount if the user requests the software
>> controller, the mba_MBps option, and the MBM counters are assignable.
>>
>> Signed-off-by: Ben Horgan <ben.horgan@xxxxxxx>
>> ---
>> fs/resctrl/rdtgroup.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
>> index fa5712db3778..7ef316b24a41 100644
>> --- a/fs/resctrl/rdtgroup.c
>> +++ b/fs/resctrl/rdtgroup.c
>> @@ -2528,7 +2528,8 @@ static bool supports_mba_mbps(void)
>>
>> return (resctrl_is_mbm_enabled() &&
>> r->alloc_capable && is_mba_linear() &&
>> - r->ctrl_scope == rmbm->mon_scope);
>> + r->ctrl_scope == rmbm->mon_scope &&
>> + !rmbm->mon.mbm_cntr_assignable);
>> }
>>
>> /*
>> @@ -2943,7 +2944,7 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
>> ctx->enable_cdpl2 = true;
>> return 0;
>> case Opt_mba_mbps:
>> - msg = "mba_MBps requires MBM and linear scale MBA at L3 scope";
>> + msg = "mba_MBps requires dedicated MBM counters and linear scale MBA at L3 scope";
>
> This looks like the original. I was expecting:
> https://lore.kernel.org/lkml/cac437e2-8139-4833-9cbd-55d626062730@xxxxxxx/ ?

Ah, sorry! Updated locally now.

Thanks,

Ben

>
>> if (!supports_mba_mbps())
>> return invalfc(fc, msg);
>> ctx->enable_mba_mbps = true;
>
> Reinette