From: Reinette Chatre <reinette.chatre@intel.com>
To: Peter Newman <peternewman@google.com>, Fenghua Yu <fenghua.yu@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>, <x86@kernel.org>,
"H . Peter Anvin" <hpa@zytor.com>,
Shaopeng Tan <tan.shaopeng@fujitsu.com>,
James Morse <james.morse@arm.com>,
Babu Moger <babu.moger@amd.com>, Tony Luck <tony.luck@intel.com>,
Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
<linux-kernel@vger.kernel.org>, <eranian@google.com>,
<irogers@google.com>, <namhyung@google.com>
Subject: Re: [PATCH] x86/resctrl: Fix arch_mbm_* array overrun on SNC
Date: Thu, 22 Aug 2024 09:33:46 -0700 [thread overview]
Message-ID: <dd0342ae-7474-44c4-ac80-d12b69f093c7@intel.com> (raw)
In-Reply-To: <f67e36b2-709f-485f-a0db-388247ff6b37@intel.com>
Hi Peter,
On 8/1/24 11:16 AM, Reinette Chatre wrote:
> On 7/22/24 1:46 PM, Peter Newman wrote:
>> When using resctrl on systems with Sub-NUMA Clustering enabled,
>> monitoring groups may be allocated RMID values which would overrun the
>> arch_mbm_{local,total} arrays.
>>
>> This is due to inconsistencies in whether the SNC-adjusted num_rmid
>> value or the unadjusted value in resctrl_arch_system_num_rmid_idx() is
>> used. The num_rmid value for the L3 resource is currently:
>>
>> resctrl_arch_system_num_rmid_idx() / snc_nodes_per_l3_cache
>>
>> As a simple fix, make resctrl_arch_system_num_rmid_idx() return the
>> SNC-adjusted, L3 num_rmid value on x86.
>>
>
> Thank you very much for finding, root-causing, and providing a fix for
> the issue.
>
>> Fixes: e13db55b5a0d ("x86/resctrl: Introduce snc_nodes_per_l3_cache")
>> Signed-off-by: Peter Newman <peternewman@google.com>
>> ---
>> arch/x86/include/asm/resctrl.h | 6 ------
>> arch/x86/kernel/cpu/resctrl/core.c | 8 ++++++++
>> include/linux/resctrl.h | 3 +++
>> 3 files changed, 11 insertions(+), 6 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/resctrl.h b/arch/x86/include/asm/resctrl.h
>> index 12dbd2588ca7..8b1b6ce1e51b 100644
>> --- a/arch/x86/include/asm/resctrl.h
>> +++ b/arch/x86/include/asm/resctrl.h
>> @@ -156,12 +156,6 @@ static inline void resctrl_sched_in(struct task_struct *tsk)
>> __resctrl_sched_in(tsk);
>> }
>> -static inline u32 resctrl_arch_system_num_rmid_idx(void)
>> -{
>> - /* RMID are independent numbers for x86. num_rmid_idx == num_rmid */
>> - return boot_cpu_data.x86_cache_max_rmid + 1;
>> -}
>> -
>> static inline void resctrl_arch_rmid_idx_decode(u32 idx, u32 *closid, u32 *rmid)
>> {
>> *rmid = idx;
>> diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
>> index 1930fce9dfe9..8591d53c144b 100644
>> --- a/arch/x86/kernel/cpu/resctrl/core.c
>> +++ b/arch/x86/kernel/cpu/resctrl/core.c
>> @@ -119,6 +119,14 @@ struct rdt_hw_resource rdt_resources_all[] = {
>> },
>> };
>> +u32 resctrl_arch_system_num_rmid_idx(void)
>> +{
>> + struct rdt_resource *r = &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl;
>> +
>> + /* RMID are independent numbers for x86. num_rmid_idx == num_rmid */
>> + return r->num_rmid;
>> +}
>> +
>> /*
>> * cache_alloc_hsw_probe() - Have to probe for Intel haswell server CPUs
>> * as they do not have CPUID enumeration support for Cache allocation.
>> diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
>> index b0875b99e811..43ac241471b3 100644
>> --- a/include/linux/resctrl.h
>> +++ b/include/linux/resctrl.h
>> @@ -248,6 +248,9 @@ struct resctrl_schema {
>> /* The number of closid supported by this resource regardless of CDP */
>> u32 resctrl_arch_get_num_closid(struct rdt_resource *r);
>> +
>> +u32 resctrl_arch_system_num_rmid_idx(void);
>> +
>
> nit: the additional empty lines are unnecessary.
>
>> int resctrl_arch_update_domains(struct rdt_resource *r, u32 closid);
>> /*
>
> | Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
>
It would be great if this fix can be included in the kernel release.
Could you please send V2 with nit and tag applied to be ready for
inclusion?
Thank you
Reinette
prev parent reply other threads:[~2024-08-22 16:33 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-22 20:46 Peter Newman
2024-08-01 18:16 ` Reinette Chatre
2024-08-22 16:33 ` Reinette Chatre [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dd0342ae-7474-44c4-ac80-d12b69f093c7@intel.com \
--to=reinette.chatre@intel.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=irogers@google.com \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=mingo@redhat.com \
--cc=namhyung@google.com \
--cc=peternewman@google.com \
--cc=tan.shaopeng@fujitsu.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®