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

Reinette Chatre
2026-03-27T16:14:47Z

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?

> 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@arm.com>
> ---
> 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@arm.com/ ?

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

Reinette