[PATCH RFC v6 04/18] fs/resctrl: Add resctrl_is_membw() helper
Drew Fustini <[email protected]> Mon, 01 Jun 2026 13:35:58 -0700
| Newsgroups | dev.linux.lists.acpica-devel,dev.linux.lists.linux-rt-devel,org.infradead.lists.linux-riscv,org.kernel.vger.linux-acpi,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Four sites in fs/resctrl distinguish bandwidth resources (MBA, SMBA) from cache resources by explicit rid match: fs/resctrl/ctrlmondata.c parse_line() fs/resctrl/rdtgroup.c rdtgroup_mode_test_exclusive() fs/resctrl/rdtgroup.c rdtgroup_size_show() fs/resctrl/rdtgroup.c rdtgroup_init_alloc() Replace the open-coded MBA/SMBA tests with a single resctrl_is_membw() helper keyed on schema_fmt (RESCTRL_SCHEMA_RANGE). No functional change: every existing RESCTRL_SCHEMA_RANGE resource is MBA or SMBA today. This isolates fs/resctrl from the addition of further bandwidth resource types so the four call sites do not have to be updated for each new rid. Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Drew Fustini <[email protected]> --- fs/resctrl/ctrlmondata.c | 3 +-- fs/resctrl/internal.h | 2 ++ fs/resctrl/rdtgroup.c | 14 +++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c index 9a7dfc48cb2e..d9f052700941 100644 --- a/fs/resctrl/ctrlmondata.c +++ b/fs/resctrl/ctrlmondata.c @@ -245,8 +245,7 @@ static int parse_line(char *line, struct resctrl_schema *s, if (WARN_ON_ONCE(!parse_ctrlval)) return -EINVAL; - if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP && - (r->rid == RDT_RESOURCE_MBA || r->rid == RDT_RESOURCE_SMBA)) { + if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP && resctrl_is_membw(r)) { rdt_last_cmd_puts("Cannot pseudo-lock MBA resource\n"); return -EINVAL; } diff --git a/fs/resctrl/internal.h b/fs/resctrl/internal.h index 1a9b29119f88..76187987b2ee 100644 --- a/fs/resctrl/internal.h +++ b/fs/resctrl/internal.h @@ -397,6 +397,8 @@ void mbm_handle_overflow(struct work_struct *work); bool is_mba_sc(struct rdt_resource *r); +bool resctrl_is_membw(struct rdt_resource *r); + void cqm_setup_limbo_handler(struct rdt_l3_mon_domain *dom, unsigned long delay_ms, int exclude_cpu); diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index 5dfdaa6f9d8f..0f331bf5ce82 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -1412,7 +1412,7 @@ static bool rdtgroup_mode_test_exclusive(struct rdtgroup *rdtgrp) list_for_each_entry(s, &resctrl_schema_all, list) { r = s->res; - if (r->rid == RDT_RESOURCE_MBA || r->rid == RDT_RESOURCE_SMBA) + if (resctrl_is_membw(r)) continue; has_cache = true; list_for_each_entry(d, &r->ctrl_domains, hdr.list) { @@ -1555,6 +1555,12 @@ bool is_mba_sc(struct rdt_resource *r) return r->membw.mba_sc; } +/* RANGE schema is bandwidth (MBA/SMBA). BITMAP is cache. */ +bool resctrl_is_membw(struct rdt_resource *r) +{ + return r->schema_fmt == RESCTRL_SCHEMA_RANGE; +} + /* * rdtgroup_size_show - Display size in bytes of allocated regions * @@ -1616,8 +1622,7 @@ static int rdtgroup_size_show(struct kernfs_open_file *of, ctrl = resctrl_arch_get_config(r, d, closid, type); - if (r->rid == RDT_RESOURCE_MBA || - r->rid == RDT_RESOURCE_SMBA) + if (resctrl_is_membw(r)) size = ctrl; else size = rdtgroup_cbm_to_size(r, d, ctrl); @@ -3648,8 +3653,7 @@ static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp) list_for_each_entry(s, &resctrl_schema_all, list) { r = s->res; - if (r->rid == RDT_RESOURCE_MBA || - r->rid == RDT_RESOURCE_SMBA) { + if (resctrl_is_membw(r)) { rdtgroup_init_mba(r, rdtgrp->closid); if (is_mba_sc(r)) continue; -- 2.43.0