The software controller requires that for each MBA control there is one MBM
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";
if (!supports_mba_mbps())
return invalfc(fc, msg);
ctx->enable_mba_mbps = true;
--
2.43.0
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
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@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/ ? Ah, sorry! Updated locally now. Thanks, Ben > >> if (!supports_mba_mbps()) >> return invalfc(fc, msg); >> ctx->enable_mba_mbps = true; > > Reinette
© 2016 - 2026 Red Hat, Inc.