Commit 32150edd authored by James Morse's avatar James Morse Committed by Borislav Petkov

x86/resctrl: Swizzle rdt_resource and resctrl_schema in pseudo_lock_region

struct pseudo_lock_region points to the rdt_resource.

Once the resources are merged, this won't be unique. The resource name
is moving into the schema, so that the filesystem portions of resctrl can
generate it.

Swap pseudo_lock_region's rdt_resource pointer for a schema pointer.
Signed-off-by: default avatarJames Morse <james.morse@arm.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Reviewed-by: default avatarJamie Iles <jamie@nuviainc.com>
Reviewed-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Tested-by: default avatarBabu Moger <babu.moger@amd.com>
Link: https://lkml.kernel.org/r/20210728170637.25610-11-james.morse@arm.com
parent 1c290682
...@@ -227,7 +227,7 @@ static int parse_line(char *line, struct resctrl_schema *s, ...@@ -227,7 +227,7 @@ static int parse_line(char *line, struct resctrl_schema *s,
* the required initialization for single * the required initialization for single
* region and return. * region and return.
*/ */
rdtgrp->plr->r = r; rdtgrp->plr->s = s;
rdtgrp->plr->d = d; rdtgrp->plr->d = d;
rdtgrp->plr->cbm = d->new_ctrl; rdtgrp->plr->cbm = d->new_ctrl;
d->plr = rdtgrp->plr; d->plr = rdtgrp->plr;
...@@ -426,7 +426,7 @@ int rdtgroup_schemata_show(struct kernfs_open_file *of, ...@@ -426,7 +426,7 @@ int rdtgroup_schemata_show(struct kernfs_open_file *of,
ret = -ENODEV; ret = -ENODEV;
} else { } else {
seq_printf(s, "%s:%d=%x\n", seq_printf(s, "%s:%d=%x\n",
rdtgrp->plr->r->name, rdtgrp->plr->s->res->name,
rdtgrp->plr->d->id, rdtgrp->plr->d->id,
rdtgrp->plr->cbm); rdtgrp->plr->cbm);
} }
......
...@@ -163,8 +163,8 @@ struct mongroup { ...@@ -163,8 +163,8 @@ struct mongroup {
/** /**
* struct pseudo_lock_region - pseudo-lock region information * struct pseudo_lock_region - pseudo-lock region information
* @r: RDT resource to which this pseudo-locked region * @s: Resctrl schema for the resource to which this
* belongs * pseudo-locked region belongs
* @d: RDT domain to which this pseudo-locked region * @d: RDT domain to which this pseudo-locked region
* belongs * belongs
* @cbm: bitmask of the pseudo-locked region * @cbm: bitmask of the pseudo-locked region
...@@ -184,7 +184,7 @@ struct mongroup { ...@@ -184,7 +184,7 @@ struct mongroup {
* @pm_reqs: Power management QoS requests related to this region * @pm_reqs: Power management QoS requests related to this region
*/ */
struct pseudo_lock_region { struct pseudo_lock_region {
struct rdt_resource *r; struct resctrl_schema *s;
struct rdt_domain *d; struct rdt_domain *d;
u32 cbm; u32 cbm;
wait_queue_head_t lock_thread_wq; wait_queue_head_t lock_thread_wq;
......
...@@ -250,7 +250,7 @@ static void pseudo_lock_region_clear(struct pseudo_lock_region *plr) ...@@ -250,7 +250,7 @@ static void pseudo_lock_region_clear(struct pseudo_lock_region *plr)
plr->line_size = 0; plr->line_size = 0;
kfree(plr->kmem); kfree(plr->kmem);
plr->kmem = NULL; plr->kmem = NULL;
plr->r = NULL; plr->s = NULL;
if (plr->d) if (plr->d)
plr->d->plr = NULL; plr->d->plr = NULL;
plr->d = NULL; plr->d = NULL;
...@@ -294,10 +294,10 @@ static int pseudo_lock_region_init(struct pseudo_lock_region *plr) ...@@ -294,10 +294,10 @@ static int pseudo_lock_region_init(struct pseudo_lock_region *plr)
ci = get_cpu_cacheinfo(plr->cpu); ci = get_cpu_cacheinfo(plr->cpu);
plr->size = rdtgroup_cbm_to_size(plr->r, plr->d, plr->cbm); plr->size = rdtgroup_cbm_to_size(plr->s->res, plr->d, plr->cbm);
for (i = 0; i < ci->num_leaves; i++) { for (i = 0; i < ci->num_leaves; i++) {
if (ci->info_list[i].level == plr->r->cache_level) { if (ci->info_list[i].level == plr->s->res->cache_level) {
plr->line_size = ci->info_list[i].coherency_line_size; plr->line_size = ci->info_list[i].coherency_line_size;
return 0; return 0;
} }
...@@ -800,7 +800,7 @@ bool rdtgroup_cbm_overlaps_pseudo_locked(struct rdt_domain *d, unsigned long cbm ...@@ -800,7 +800,7 @@ bool rdtgroup_cbm_overlaps_pseudo_locked(struct rdt_domain *d, unsigned long cbm
unsigned long cbm_b; unsigned long cbm_b;
if (d->plr) { if (d->plr) {
cbm_len = d->plr->r->cache.cbm_len; cbm_len = d->plr->s->res->cache.cbm_len;
cbm_b = d->plr->cbm; cbm_b = d->plr->cbm;
if (bitmap_intersects(&cbm, &cbm_b, cbm_len)) if (bitmap_intersects(&cbm, &cbm_b, cbm_len))
return true; return true;
......
...@@ -1439,8 +1439,8 @@ static int rdtgroup_size_show(struct kernfs_open_file *of, ...@@ -1439,8 +1439,8 @@ static int rdtgroup_size_show(struct kernfs_open_file *of,
ret = -ENODEV; ret = -ENODEV;
} else { } else {
seq_printf(s, "%*s:", max_name_width, seq_printf(s, "%*s:", max_name_width,
rdtgrp->plr->r->name); rdtgrp->plr->s->res->name);
size = rdtgroup_cbm_to_size(rdtgrp->plr->r, size = rdtgroup_cbm_to_size(rdtgrp->plr->s->res,
rdtgrp->plr->d, rdtgrp->plr->d,
rdtgrp->plr->cbm); rdtgrp->plr->cbm);
seq_printf(s, "%d=%u\n", rdtgrp->plr->d->id, size); seq_printf(s, "%d=%u\n", rdtgrp->plr->d->id, size);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment