mirror of
https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10.git
synced 2026-09-09 00:07:04 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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]));
|
||||
}
|
||||
if (!update_all)
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
|
||||
if (update_all)
|
||||
goto next;
|
||||
|
||||
rdt_last_cmd_printf("Invalid domain %lu\n", dom_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user