* [PATCH v6 1/2] fs/resctrl: Report invalid domain ID when parsing io_alloc_cbm
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 ` 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 ` [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Aaron Tomlin
2026-03-27 0:23 ` [PATCH v6 0/2] " Moger, Babu
2 siblings, 2 replies; 8+ messages in thread
From: Aaron Tomlin @ 2026-03-25 0:11 UTC (permalink / raw)
To: tony.luck, reinette.chatre, Dave.Martin, james.morse, babu.moger,
tglx, mingo, bp, dave.hansen
Cc: dave.martin, sean, neelx, mproche, chjohnst, linux-kernel
The last_cmd_status file is intended to report details about the most
recent resctrl filesystem operation, specifically to aid in diagnosing
failures.
However, when parsing io_alloc_cbm, if a user provides a domain ID that
does not exist in the resource, the operation fails with -EINVAL without
updating last_cmd_status. This results in inconsistent behaviour where
the system call returns an error, but last_cmd_status misleadingly reports
"ok", leaving the user unaware that the failure was caused by an invalid
domain ID.
Write an error message to last_cmd_status when the target domain ID cannot
be found.
Fixes: 28fa2cce7a83 ("fs/resctrl: Introduce interface to modify io_alloc capacity bitmasks")
Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
---
fs/resctrl/ctrlmondata.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c
index cc4237c57cbe..2ef53161ce11 100644
--- a/fs/resctrl/ctrlmondata.c
+++ b/fs/resctrl/ctrlmondata.c
@@ -992,6 +992,7 @@ static int resctrl_io_alloc_parse_line(char *line, struct rdt_resource *r,
}
}
+ rdt_last_cmd_printf("Invalid domain %lu\n", dom_id);
return -EINVAL;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v6 1/2] fs/resctrl: Report invalid domain ID when parsing io_alloc_cbm
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
1 sibling, 0 replies; 8+ messages in thread
From: Reinette Chatre @ 2026-04-01 17:27 UTC (permalink / raw)
To: Aaron Tomlin, tony.luck, Dave.Martin, james.morse, babu.moger,
tglx, mingo, bp, dave.hansen
Cc: sean, neelx, mproche, chjohnst, linux-kernel
Hi Aaron,
On 3/24/26 5:11 PM, Aaron Tomlin wrote:
> The last_cmd_status file is intended to report details about the most
> recent resctrl filesystem operation, specifically to aid in diagnosing
> failures.
>
> However, when parsing io_alloc_cbm, if a user provides a domain ID that
> does not exist in the resource, the operation fails with -EINVAL without
> updating last_cmd_status. This results in inconsistent behaviour where
> the system call returns an error, but last_cmd_status misleadingly reports
> "ok", leaving the user unaware that the failure was caused by an invalid
> domain ID.
>
> Write an error message to last_cmd_status when the target domain ID cannot
> be found.
>
> Fixes: 28fa2cce7a83 ("fs/resctrl: Introduce interface to modify io_alloc capacity bitmasks")
> Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
> Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
> ---
Thank you.
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reinette
^ permalink raw reply [flat|nested] 8+ messages in thread* [tip: x86/cache] fs/resctrl: Report invalid domain ID when parsing io_alloc_cbm
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-bot2 for Aaron Tomlin
1 sibling, 0 replies; 8+ messages in thread
From: tip-bot2 for Aaron Tomlin @ 2026-04-01 22:35 UTC (permalink / raw)
To: linux-tip-commits
Cc: Reinette Chatre, Aaron Tomlin, Borislav Petkov (AMD), Babu Moger,
x86, linux-kernel
The following commit has been merged into the x86/cache branch of tip:
Commit-ID: d06b8e7c97c3290e61006e30b32beb9e715fab82
Gitweb: https://git.kernel.org/tip/d06b8e7c97c3290e61006e30b32beb9e715fab82
Author: Aaron Tomlin <atomlin@atomlin.com>
AuthorDate: Tue, 24 Mar 2026 20:11:58 -04:00
Committer: Borislav Petkov (AMD) <bp@alien8.de>
CommitterDate: Thu, 02 Apr 2026 00:11:35 +02:00
fs/resctrl: Report invalid domain ID when parsing io_alloc_cbm
The last_cmd_status file is intended to report details about the most recent
resctrl filesystem operation, specifically to aid in diagnosing failures.
However, when parsing io_alloc_cbm, if a user provides a domain ID that does
not exist in the resource, the operation fails with -EINVAL without updating
last_cmd_status. This results in inconsistent behaviour where the system call
returns an error, but last_cmd_status misleadingly reports "ok", leaving the
user unaware that the failure was caused by an invalid domain ID.
Write an error message to last_cmd_status when the target domain ID cannot
be found.
Fixes: 28fa2cce7a83 ("fs/resctrl: Introduce interface to modify io_alloc capacity bitmasks")
Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Link: https://patch.msgid.link/20260325001159.447075-2-atomlin@atomlin.com
---
fs/resctrl/ctrlmondata.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c
index cc4237c..2ef5316 100644
--- a/fs/resctrl/ctrlmondata.c
+++ b/fs/resctrl/ctrlmondata.c
@@ -992,6 +992,7 @@ next:
}
}
+ rdt_last_cmd_printf("Invalid domain %lu\n", dom_id);
return -EINVAL;
}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains
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-03-25 0:11 ` Aaron Tomlin
2026-04-01 17:28 ` 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
2 siblings, 2 replies; 8+ messages in thread
From: Aaron Tomlin @ 2026-03-25 0:11 UTC (permalink / raw)
To: tony.luck, reinette.chatre, Dave.Martin, james.morse, babu.moger,
tglx, mingo, bp, dave.hansen
Cc: dave.martin, sean, neelx, mproche, chjohnst, linux-kernel
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
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains
2026-03-25 0:11 ` [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Aaron Tomlin
@ 2026-04-01 17:28 ` Reinette Chatre
2026-04-01 22:35 ` [tip: x86/cache] " tip-bot2 for Aaron Tomlin
1 sibling, 0 replies; 8+ messages in thread
From: Reinette Chatre @ 2026-04-01 17:28 UTC (permalink / raw)
To: Aaron Tomlin, tony.luck, Dave.Martin, james.morse, babu.moger,
tglx, mingo, bp, dave.hansen
Cc: sean, neelx, mproche, chjohnst, linux-kernel
Hi Aaron,
On 3/24/26 5:11 PM, Aaron Tomlin wrote:
> 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>
> ---
Thank you.
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reinette
^ permalink raw reply [flat|nested] 8+ messages in thread
* [tip: x86/cache] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains
2026-03-25 0:11 ` [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Aaron Tomlin
2026-04-01 17:28 ` Reinette Chatre
@ 2026-04-01 22:35 ` tip-bot2 for Aaron Tomlin
1 sibling, 0 replies; 8+ messages in thread
From: tip-bot2 for Aaron Tomlin @ 2026-04-01 22:35 UTC (permalink / raw)
To: linux-tip-commits
Cc: Aaron Tomlin, Borislav Petkov (AMD), Reinette Chatre, Babu Moger,
x86, linux-kernel
The following commit has been merged into the x86/cache branch of tip:
Commit-ID: d2bf45d067c728b0fe6e8f99a7386b8291e391e3
Gitweb: https://git.kernel.org/tip/d2bf45d067c728b0fe6e8f99a7386b8291e391e3
Author: Aaron Tomlin <atomlin@atomlin.com>
AuthorDate: Tue, 24 Mar 2026 20:11:59 -04:00
Committer: Borislav Petkov (AMD) <bp@alien8.de>
CommitterDate: Thu, 02 Apr 2026 00:22:59 +02:00
fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains
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>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Link: https://patch.msgid.link/20260325001159.447075-3-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 ba609f8..b003bed 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 2ef5316..9a7dfc4 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 @@ next:
&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;
}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v6 0/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains
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-03-25 0:11 ` [PATCH v6 2/2] fs/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Aaron Tomlin
@ 2026-03-27 0:23 ` Moger, Babu
2 siblings, 0 replies; 8+ messages in thread
From: Moger, Babu @ 2026-03-27 0:23 UTC (permalink / raw)
To: Aaron Tomlin, tony.luck, reinette.chatre, Dave.Martin,
james.morse, babu.moger, tglx, mingo, bp, dave.hansen
Cc: sean, neelx, mproche, chjohnst, linux-kernel
Looks good to me.
On 3/24/2026 7:11 PM, Aaron Tomlin wrote:
> Hi Babu, Tony, Reinette,
>
> This series addresses two limitations in the fs/resctrl io_alloc interface:
> inconsistent error reporting and the lack of a mechanism for bulk
> configuration.
>
> The last_cmd_status file is intended to report details about the most
> recent resctrl filesystem operation, specifically to aid in diagnosing
> failures. However, when parsing io_alloc_cbm, if a user provides a domain ID
> that does not exist in the resource, the operation fails with -EINVAL without
> updating last_cmd_status. This results in inconsistent behaviour where
> the system call returns an error, but last_cmd_status misleadingly reports
> "ok", leaving the user unaware that the failure was caused by an invalid
> domain ID. Patch 1 addresses this by writing an error message to
> last_cmd_status when the target domain ID cannot be found.
>
> 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. Patch 2
> introduces 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.
>
> Please let me know your thoughts.
Tested-by: Babu Moger <babu.moger@amd.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
^ permalink raw reply [flat|nested] 8+ messages in thread