mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 14:42:08 +02:00
x86/resctrl: Always initialise rid field in rdt_resources_all[]
x86 has an array, rdt_resources_all[], of all possible resources. The for-each-resource walkers depend on the rid field of all resources being initialised. If the array ever grows due to another architecture adding a resource type that is not defined on x86, the for-each-resources walkers will loop forever. Initialise all the rid values in resctrl_arch_late_init() before any for-each-resource walker can be called. Signed-off-by: James Morse <james.morse@arm.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Reviewed-by: Fenghua Yu <fenghuay@nvidia.com> Tested-by: Fenghua Yu <fenghuay@nvidia.com> Tested-by: Babu Moger <babu.moger@amd.com> Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com> Tested-by: Tony Luck <tony.luck@intel.com> Link: https://lore.kernel.org/20250515165855.31452-24-james.morse@arm.com
This commit is contained in:
parent
b7b57edbf5
commit
f6b25be204
|
|
@ -60,7 +60,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
|
|||
[RDT_RESOURCE_L3] =
|
||||
{
|
||||
.r_resctrl = {
|
||||
.rid = RDT_RESOURCE_L3,
|
||||
.name = "L3",
|
||||
.ctrl_scope = RESCTRL_L3_CACHE,
|
||||
.mon_scope = RESCTRL_L3_CACHE,
|
||||
|
|
@ -74,7 +73,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
|
|||
[RDT_RESOURCE_L2] =
|
||||
{
|
||||
.r_resctrl = {
|
||||
.rid = RDT_RESOURCE_L2,
|
||||
.name = "L2",
|
||||
.ctrl_scope = RESCTRL_L2_CACHE,
|
||||
.ctrl_domains = ctrl_domain_init(RDT_RESOURCE_L2),
|
||||
|
|
@ -86,7 +84,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
|
|||
[RDT_RESOURCE_MBA] =
|
||||
{
|
||||
.r_resctrl = {
|
||||
.rid = RDT_RESOURCE_MBA,
|
||||
.name = "MB",
|
||||
.ctrl_scope = RESCTRL_L3_CACHE,
|
||||
.ctrl_domains = ctrl_domain_init(RDT_RESOURCE_MBA),
|
||||
|
|
@ -96,7 +93,6 @@ struct rdt_hw_resource rdt_resources_all[RDT_NUM_RESOURCES] = {
|
|||
[RDT_RESOURCE_SMBA] =
|
||||
{
|
||||
.r_resctrl = {
|
||||
.rid = RDT_RESOURCE_SMBA,
|
||||
.name = "SMBA",
|
||||
.ctrl_scope = RESCTRL_L3_CACHE,
|
||||
.ctrl_domains = ctrl_domain_init(RDT_RESOURCE_SMBA),
|
||||
|
|
@ -996,7 +992,11 @@ void resctrl_cpu_detect(struct cpuinfo_x86 *c)
|
|||
static int __init resctrl_arch_late_init(void)
|
||||
{
|
||||
struct rdt_resource *r;
|
||||
int state, ret;
|
||||
int state, ret, i;
|
||||
|
||||
/* for_each_rdt_resource() requires all rid to be initialised. */
|
||||
for (i = 0; i < RDT_NUM_RESOURCES; i++)
|
||||
rdt_resources_all[i].r_resctrl.rid = i;
|
||||
|
||||
/*
|
||||
* Initialize functions(or definitions) that are different
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user