lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20260210210717.3866344-3-atomlin@atomlin.com>
Date: Tue, 10 Feb 2026 16:07:17 -0500
From: Aaron Tomlin <atomlin@...mlin.com>
To: tony.luck@...el.com,
	reinette.chatre@...el.com,
	Dave.Martin@....com,
	james.morse@....com,
	babu.moger@....com,
	tglx@...utronix.de,
	mingo@...hat.com,
	bp@...en8.de,
	dave.hansen@...ux.intel.com
Cc: dave.martin@....com,
	sean@...e.io,
	neelx@...e.com,
	mproche@...il.com,
	chjohnst@...il.com,
	linux-kernel@...r.kernel.org
Subject: [PATCH v5 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains

Currently, 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 update the Capacity Bitmask (CBM)
across all cache domains in a single operation.

For example, a user can write "*=0" to the io_alloc_cbm file to
programme every domain with the same mask. The value supplied must,
however, remain within the valid range defined by the resource
(e.g., min_cbm_bits).

Signed-off-by: Aaron Tomlin <atomlin@...mlin.com>
---
 Documentation/filesystems/resctrl.rst | 10 ++++++++++
 fs/resctrl/ctrlmondata.c              | 15 ++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/Documentation/filesystems/resctrl.rst b/Documentation/filesystems/resctrl.rst
index 8c8ce678148a..948219e58882 100644
--- a/Documentation/filesystems/resctrl.rst
+++ b/Documentation/filesystems/resctrl.rst
@@ -215,6 +215,16 @@ related to allocation:
 			# cat /sys/fs/resctrl/info/L3/io_alloc_cbm
 			0=00ff;1=000f
 
+		Set each CBM to a specified value.
+
+		An ID of "*" configures all domains with the provided CBM.
+
+		Example::
+
+			# 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 b96b661626c2..f47331a97337 100644
--- a/fs/resctrl/ctrlmondata.c
+++ b/fs/resctrl/ctrlmondata.c
@@ -873,21 +873,26 @@ static int resctrl_io_alloc_parse_line(char *line,  struct rdt_resource *r,
 	struct rdt_ctrl_domain *d;
 	char *dom = NULL, *id;
 	unsigned long dom_id;
+	bool update_all;
 
 next:
 	if (!line || line[0] == '\0')
 		return 0;
 
+	update_all = false;
 	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;
@@ -903,10 +908,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


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ