Skip to content

Commit 131dab1

Browse files
James Morsebp3tk0v
authored andcommitted
x86/resctrl: Remove fflags from struct rdt_resource
The resctrl arch code specifies whether a resource controls a cache or memory using the fflags field. This field is then used by resctrl to determine which files should be exposed in the filesystem. Allowing the architecture to pick this value means the RFTYPE_ flags have to be in a shared header, and allows an architecture to create a combination that resctrl does not support. Remove the fflags field, and pick the value based on the resource id. Signed-off-by: James Morse <james.morse@arm.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com> Reviewed-by: Tony Luck <tony.luck@intel.com> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Reviewed-by: Fenghua Yu <fenghuay@nvidia.com> Reviewed-by: Babu Moger <babu.moger@amd.com> Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com> Tested-by: Peter Newman <peternewman@google.com> Tested-by: Amit Singh Tomar <amitsinght@marvell.com> # arm64 Tested-by: Shanker Donthineni <sdonthineni@nvidia.com> # arm64 Tested-by: Babu Moger <babu.moger@amd.com> Link: https://lore.kernel.org/r/20250311183715.16445-4-james.morse@arm.com
1 parent 3c02153 commit 131dab1

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

arch/x86/kernel/cpu/resctrl/core.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
7474
.mon_domains = mon_domain_init(RDT_RESOURCE_L3),
7575
.parse_ctrlval = parse_cbm,
7676
.format_str = "%d=%0*x",
77-
.fflags = RFTYPE_RES_CACHE,
7877
},
7978
.msr_base = MSR_IA32_L3_CBM_BASE,
8079
.msr_update = cat_wrmsr,
@@ -88,7 +87,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
8887
.ctrl_domains = ctrl_domain_init(RDT_RESOURCE_L2),
8988
.parse_ctrlval = parse_cbm,
9089
.format_str = "%d=%0*x",
91-
.fflags = RFTYPE_RES_CACHE,
9290
},
9391
.msr_base = MSR_IA32_L2_CBM_BASE,
9492
.msr_update = cat_wrmsr,
@@ -102,7 +100,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
102100
.ctrl_domains = ctrl_domain_init(RDT_RESOURCE_MBA),
103101
.parse_ctrlval = parse_bw,
104102
.format_str = "%d=%*u",
105-
.fflags = RFTYPE_RES_MB,
106103
},
107104
},
108105
[RDT_RESOURCE_SMBA] =
@@ -114,7 +111,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
114111
.ctrl_domains = ctrl_domain_init(RDT_RESOURCE_SMBA),
115112
.parse_ctrlval = parse_bw,
116113
.format_str = "%d=%*u",
117-
.fflags = RFTYPE_RES_MB,
118114
},
119115
},
120116
};

arch/x86/kernel/cpu/resctrl/rdtgroup.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,6 +2165,20 @@ static int rdtgroup_mkdir_info_resdir(void *priv, char *name,
21652165
return ret;
21662166
}
21672167

2168+
static unsigned long fflags_from_resource(struct rdt_resource *r)
2169+
{
2170+
switch (r->rid) {
2171+
case RDT_RESOURCE_L3:
2172+
case RDT_RESOURCE_L2:
2173+
return RFTYPE_RES_CACHE;
2174+
case RDT_RESOURCE_MBA:
2175+
case RDT_RESOURCE_SMBA:
2176+
return RFTYPE_RES_MB;
2177+
}
2178+
2179+
return WARN_ON_ONCE(1);
2180+
}
2181+
21682182
static int rdtgroup_create_info_dir(struct kernfs_node *parent_kn)
21692183
{
21702184
struct resctrl_schema *s;
@@ -2185,14 +2199,14 @@ static int rdtgroup_create_info_dir(struct kernfs_node *parent_kn)
21852199
/* loop over enabled controls, these are all alloc_capable */
21862200
list_for_each_entry(s, &resctrl_schema_all, list) {
21872201
r = s->res;
2188-
fflags = r->fflags | RFTYPE_CTRL_INFO;
2202+
fflags = fflags_from_resource(r) | RFTYPE_CTRL_INFO;
21892203
ret = rdtgroup_mkdir_info_resdir(s, s->name, fflags);
21902204
if (ret)
21912205
goto out_destroy;
21922206
}
21932207

21942208
for_each_mon_capable_rdt_resource(r) {
2195-
fflags = r->fflags | RFTYPE_MON_INFO;
2209+
fflags = fflags_from_resource(r) | RFTYPE_MON_INFO;
21962210
sprintf(name, "%s_MON", r->name);
21972211
ret = rdtgroup_mkdir_info_resdir(r, name, fflags);
21982212
if (ret)

include/linux/resctrl.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ enum resctrl_scope {
210210
* @format_str: Per resource format string to show domain value
211211
* @parse_ctrlval: Per resource function pointer to parse control values
212212
* @evt_list: List of monitoring events
213-
* @fflags: flags to choose base and info files
214213
* @cdp_capable: Is the CDP feature available on this resource
215214
*/
216215
struct rdt_resource {
@@ -232,7 +231,6 @@ struct rdt_resource {
232231
struct resctrl_schema *s,
233232
struct rdt_ctrl_domain *d);
234233
struct list_head evt_list;
235-
unsigned long fflags;
236234
bool cdp_capable;
237235
};
238236

0 commit comments

Comments
 (0)