Messages in this thread | | | Date | Tue, 28 Feb 2023 08:27:26 -0600 | Subject | Re: [PATCH 3/7] x86/resctrl: Add a new node-scoped resource to rdt_resources_all[] | From | "Moger, Babu" <> |
| |
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@intel.com> > Sent: Thursday, January 26, 2023 12:42 PM > To: Fenghua Yu <fenghua.yu@intel.com>; Reinette Chatre > <reinette.chatre@intel.com>; Peter Newman <peternewman@google.com>; > Jonathan Corbet <corbet@lwn.net>; x86@kernel.org > Cc: Shaopeng Tan <tan.shaopeng@fujitsu.com>; James Morse > <james.morse@arm.com>; Jamie Iles <quic_jiles@quicinc.com>; Moger, Babu > <Babu.Moger@amd.com>; linux-kernel@vger.kernel.org; linux- > doc@vger.kernel.org; patches@lists.linux.dev; Tony Luck > <tony.luck@intel.com> > 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@intel.com> > --- > 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
| |