Merge: fs/resctrl: Updates to Add "*" shorthand to set io_alloc CBM for all domains

MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10/-/merge_requests/3346

Description:
updates to Add "*" shorthand to set io_alloc CBM for all domains

JIRA: https://issues.redhat.com/browse/RHEL-174711

Signed-off-by: Steve Best <sbest@redhat.com>

Approved-by: Tony Camuso <tcamuso@redhat.com>
Approved-by: David Arcari <darcari@redhat.com>
Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com>
Approved-by: Gavin Shan <gshan@redhat.com>

Merged-by: CKI GitLab Kmaint Pipeline Bot <26919896-cki-kmaint-pipeline-bot@users.noreply.gitlab.com>
This commit is contained in:
CKI KWF Bot
2026-09-01 07:27:24 +00:00
2 changed files with 26 additions and 4 deletions
+8
View File
@@ -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
+18 -4
View File
@@ -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,15 @@ 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;
}