public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Aaron Tomlin <atomlin@atomlin.com>
To: tony.luck@intel.com, reinette.chatre@intel.com,
	Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com
Cc: dave.martin@arm.com, sean@ashe.io, neelx@suse.com,
	mproche@gmail.com, chjohnst@gmail.com,
	linux-kernel@vger.kernel.org
Subject: [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains
Date: Tue, 24 Mar 2026 20:11:59 -0400	[thread overview]
Message-ID: <20260325001159.447075-3-atomlin@atomlin.com> (raw)
In-Reply-To: <20260325001159.447075-1-atomlin@atomlin.com>

Configuring the io_alloc_cbm interface requires an explicit domain ID
for each cache domain. On systems with high core counts and numerous
cache clusters, this requirement becomes cumbersome for automation and
management tasks that aim to apply a uniform policy.

Introduce a wildcard domain ID selector "*" for the io_alloc_cbm
interface. This enables users to set the same Capacity Bitmask (CBM)
across all cache domains in a single operation.

Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
---
 Documentation/filesystems/resctrl.rst |  8 ++++++++
 fs/resctrl/ctrlmondata.c              | 21 +++++++++++++++++----
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/Documentation/filesystems/resctrl.rst b/Documentation/filesystems/resctrl.rst
index ba609f8d4de5..b003bed339fd 100644
--- a/Documentation/filesystems/resctrl.rst
+++ b/Documentation/filesystems/resctrl.rst
@@ -215,6 +215,14 @@ related to allocation:
 			# cat /sys/fs/resctrl/info/L3/io_alloc_cbm
 			0=00ff;1=000f
 
+		An ID of "*" configures all domains with the provided CBM.
+
+		Example on a system that does not require a minimum number of consecutive bits in the mask::
+
+			# echo "*=0" > /sys/fs/resctrl/info/L3/io_alloc_cbm
+			# cat /sys/fs/resctrl/info/L3/io_alloc_cbm
+			0=0;1=0
+
 		When CDP is enabled "io_alloc_cbm" associated with the CDP_DATA and CDP_CODE
 		resources may reflect the same values. For example, values read from and
 		written to /sys/fs/resctrl/info/L3DATA/io_alloc_cbm may be reflected by
diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c
index 2ef53161ce11..9a7dfc48cb2e 100644
--- a/fs/resctrl/ctrlmondata.c
+++ b/fs/resctrl/ctrlmondata.c
@@ -954,25 +954,34 @@ static int resctrl_io_alloc_parse_line(char *line,  struct rdt_resource *r,
 				       struct resctrl_schema *s, u32 closid)
 {
 	enum resctrl_conf_type peer_type;
+	unsigned long dom_id = ULONG_MAX;
 	struct rdt_parse_data data;
 	struct rdt_ctrl_domain *d;
+	bool update_all = false;
 	char *dom = NULL, *id;
-	unsigned long dom_id;
 
 next:
 	if (!line || line[0] == '\0')
 		return 0;
 
+	if (update_all) {
+		rdt_last_cmd_puts("Configurations after global '*'\n");
+		return -EINVAL;
+	}
+
 	dom = strsep(&line, ";");
 	id = strsep(&dom, "=");
-	if (!dom || kstrtoul(id, 10, &dom_id)) {
+
+	if (dom && !strcmp(id, "*")) {
+		update_all = true;
+	} else if (!dom || kstrtoul(id, 10, &dom_id)) {
 		rdt_last_cmd_puts("Missing '=' or non-numeric domain\n");
 		return -EINVAL;
 	}
 
 	dom = strim(dom);
 	list_for_each_entry(d, &r->ctrl_domains, hdr.list) {
-		if (d->hdr.id == dom_id) {
+		if (update_all || d->hdr.id == dom_id) {
 			data.buf = dom;
 			data.mode = RDT_MODE_SHAREABLE;
 			data.closid = closid;
@@ -988,10 +997,14 @@ static int resctrl_io_alloc_parse_line(char *line,  struct rdt_resource *r,
 				       &d->staged_config[s->conf_type],
 				       sizeof(d->staged_config[0]));
 			}
-			goto next;
+			if (!update_all)
+				goto next;
 		}
 	}
 
+	if (update_all)
+		goto next;
+
 	rdt_last_cmd_printf("Invalid domain %lu\n", dom_id);
 	return -EINVAL;
 }
-- 
2.51.0


  parent reply	other threads:[~2026-03-25  0:12 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-25  0:11 [PATCH v6 0/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Aaron Tomlin
2026-03-25  0:11 ` [PATCH v6 1/2] fs/resctrl: Report invalid domain ID when parsing io_alloc_cbm Aaron Tomlin
2026-04-01 17:27   ` Reinette Chatre
2026-04-01 22:35   ` [tip: x86/cache] " tip-bot2 for Aaron Tomlin
2026-03-25  0:11 ` Aaron Tomlin [this message]
2026-04-01 17:28   ` [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Reinette Chatre
2026-04-01 22:35   ` [tip: x86/cache] " tip-bot2 for Aaron Tomlin
2026-03-27  0:23 ` [PATCH v6 0/2] " Moger, Babu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260325001159.447075-3-atomlin@atomlin.com \
    --to=atomlin@atomlin.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=bp@alien8.de \
    --cc=chjohnst@gmail.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mproche@gmail.com \
    --cc=neelx@suse.com \
    --cc=reinette.chatre@intel.com \
    --cc=sean@ashe.io \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox