Re: [PATCH 3/7] x86/resctrl: Add a new node-scoped resource to rdt_resources_all[]

From: Moger, Babu
Date: Tue Feb 28 2023 - 09:27:39 EST


Hi Tony,
Sorry for the late response. I was looking at your patches.

Do you really need a new resource [RDT_RESOURCE_NODE] to handle this feature?

As far as I can see, all that matters is writing/reading the MSRs IA32_PQR_ASSOC and IA32_QM_EVTSEL based on cpu index. I think that can be done without having the new resource. Let me know if I have misunderstood something.

Thanks
Babu


-----Original Message-----
From: Tony Luck <tony.luck@xxxxxxxxx>
Sent: Thursday, January 26, 2023 12:42 PM
To: Fenghua Yu <fenghua.yu@xxxxxxxxx>; Reinette Chatre
<reinette.chatre@xxxxxxxxx>; Peter Newman <peternewman@xxxxxxxxxx>;
Jonathan Corbet <corbet@xxxxxxx>; x86@xxxxxxxxxx
Cc: Shaopeng Tan <tan.shaopeng@xxxxxxxxxxx>; James Morse
<james.morse@xxxxxxx>; Jamie Iles <quic_jiles@xxxxxxxxxxx>; Moger, Babu
<Babu.Moger@xxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; linux-
doc@xxxxxxxxxxxxxxx; patches@xxxxxxxxxxxxxxx; Tony Luck
<tony.luck@xxxxxxxxx>
Subject: [PATCH 3/7] x86/resctrl: Add a new node-scoped resource to
rdt_resources_all[]

Add a placeholder in the array of struct rdt_hw_resource to be used for event
monitoring of systems with Sub-NUMA Cluster enabled.

Update get_domain_id() to handle SCOPE_NODE.

Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
---
arch/x86/kernel/cpu/resctrl/internal.h | 2 ++
arch/x86/kernel/cpu/resctrl/core.c | 12 ++++++++++++
2 files changed, 14 insertions(+)

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h
b/arch/x86/kernel/cpu/resctrl/internal.h
index 15cea517efaa..39a62babd60b 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -409,12 +409,14 @@ enum resctrl_res_level {
RDT_RESOURCE_L3,
RDT_RESOURCE_L2,
RDT_RESOURCE_MBA,
+ RDT_RESOURCE_NODE,

/* Must be the last */
RDT_NUM_RESOURCES,
};

enum resctrl_scope {
+ SCOPE_NODE,
SCOPE_L2_CACHE = 2,
SCOPE_L3_CACHE = 3
};
diff --git a/arch/x86/kernel/cpu/resctrl/core.c
b/arch/x86/kernel/cpu/resctrl/core.c
index 6914232acf84..19be6fe42ef3 100644
--- a/arch/x86/kernel/cpu/resctrl/core.c
+++ b/arch/x86/kernel/cpu/resctrl/core.c
@@ -100,6 +100,16 @@ struct rdt_hw_resource rdt_resources_all[] = {
.fflags = RFTYPE_RES_MB,
},
},
+ [RDT_RESOURCE_NODE] =
+ {
+ .r_resctrl = {
+ .rid = RDT_RESOURCE_NODE,
+ .name = "L3",
+ .scope = SCOPE_NODE,
+ .domains =
domain_init(RDT_RESOURCE_NODE),
+ .fflags = RFTYPE_RES_MB,
+ },
+ },
};

/*
@@ -464,6 +474,8 @@ static int arch_domain_mbm_alloc(u32 num_rmid,
struct rdt_hw_domain *hw_dom)

static int get_domain_id(int cpu, enum resctrl_scope scope) {
+ if (scope == SCOPE_NODE)
+ return cpu_to_node(cpu);
return get_cpu_cacheinfo_id(cpu, scope); }

--
2.39.1