|
@@ -188,6 +188,17 @@ done:
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int rdtgroup_parse_resource(char *resname, char *tok, int closid)
|
|
|
|
+{
|
|
|
|
+ struct rdt_resource *r;
|
|
|
|
+
|
|
|
|
+ for_each_enabled_rdt_resource(r) {
|
|
|
|
+ if (!strcmp(resname, r->name) && closid < r->num_closid)
|
|
|
|
+ return parse_line(tok, r);
|
|
|
|
+ }
|
|
|
|
+ return -EINVAL;
|
|
|
|
+}
|
|
|
|
+
|
|
ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
|
|
ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
|
|
char *buf, size_t nbytes, loff_t off)
|
|
char *buf, size_t nbytes, loff_t off)
|
|
{
|
|
{
|
|
@@ -210,9 +221,10 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
|
|
|
|
|
|
closid = rdtgrp->closid;
|
|
closid = rdtgrp->closid;
|
|
|
|
|
|
- for_each_enabled_rdt_resource(r)
|
|
|
|
|
|
+ for_each_enabled_rdt_resource(r) {
|
|
list_for_each_entry(dom, &r->domains, list)
|
|
list_for_each_entry(dom, &r->domains, list)
|
|
dom->have_new_ctrl = false;
|
|
dom->have_new_ctrl = false;
|
|
|
|
+ }
|
|
|
|
|
|
while ((tok = strsep(&buf, "\n")) != NULL) {
|
|
while ((tok = strsep(&buf, "\n")) != NULL) {
|
|
resname = strim(strsep(&tok, ":"));
|
|
resname = strim(strsep(&tok, ":"));
|
|
@@ -220,19 +232,9 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
|
|
ret = -EINVAL;
|
|
ret = -EINVAL;
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
- for_each_enabled_rdt_resource(r) {
|
|
|
|
- if (!strcmp(resname, r->name) &&
|
|
|
|
- closid < r->num_closid) {
|
|
|
|
- ret = parse_line(tok, r);
|
|
|
|
- if (ret)
|
|
|
|
- goto out;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (!r->name) {
|
|
|
|
- ret = -EINVAL;
|
|
|
|
|
|
+ ret = rdtgroup_parse_resource(resname, tok, closid);
|
|
|
|
+ if (ret)
|
|
goto out;
|
|
goto out;
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
for_each_enabled_rdt_resource(r) {
|
|
for_each_enabled_rdt_resource(r) {
|