[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c064e0d4-e120-4921-a226-db0ec5ac409c@arm.com>
Date: Fri, 7 Mar 2025 18:08:32 +0000
From: James Morse <james.morse@....com>
To: Reinette Chatre <reinette.chatre@...el.com>, x86@...nel.org,
linux-kernel@...r.kernel.org
Cc: Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>,
Borislav Petkov <bp@...en8.de>, H Peter Anvin <hpa@...or.com>,
Babu Moger <Babu.Moger@....com>, shameerali.kolothum.thodi@...wei.com,
D Scott Phillips OS <scott@...amperecomputing.com>,
carl@...amperecomputing.com, lcherian@...vell.com,
bobo.shaobowang@...wei.com, tan.shaopeng@...itsu.com,
baolin.wang@...ux.alibaba.com, Jamie Iles <quic_jiles@...cinc.com>,
Xin Hao <xhao@...ux.alibaba.com>, peternewman@...gle.com,
dfustini@...libre.com, amitsinght@...vell.com,
David Hildenbrand <david@...hat.com>, Rex Nie <rex.nie@...uarmicro.com>,
Dave Martin <dave.martin@....com>, Koba Ko <kobak@...dia.com>,
Shanker Donthineni <sdonthineni@...dia.com>, fenghuay@...dia.com,
Shaopeng Tan <tan.shaopeng@...fujitsu.com>, Tony Luck <tony.luck@...el.com>
Subject: Re: [PATCH v7 08/49] x86/resctrl: Generate default_ctrl instead of
sharing it
Hi Reinette,
On 07/03/2025 04:33, Reinette Chatre wrote:
> On 2/28/25 11:58 AM, James Morse wrote:
>> The struct rdt_resource default_ctrl is used by both the architecture
>> code for resetting the hardware controls, and sometimes by the
>> filesystem code as the default value for the schema, unless the
>> bandwidth software controller is in use.
>>
>> Having the default exposed by the architecture code causes unnecessary
>> duplication for each architecture as the default value must be specified,
>> but can be derived from other schema properties. Now that the
>> maximum bandwidth is explicitly described, resctrl can derive the default
>> value from the schema format and the other resource properties.
>> diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
>> index 4504a12efc97..5280a2819760 100644
>> --- a/arch/x86/kernel/cpu/resctrl/core.c
>> +++ b/arch/x86/kernel/cpu/resctrl/core.c
>> @@ -143,7 +143,10 @@ static inline void cache_alloc_hsw_probe(void)
>> {
>> struct rdt_hw_resource *hw_res = &rdt_resources_all[RDT_RESOURCE_L3];
>> struct rdt_resource *r = &hw_res->r_resctrl;
>> - u64 max_cbm = BIT_ULL_MASK(20) - 1, l3_cbm_0;
>> + u64 max_cbm, l3_cbm_0;
>> +
>> + r->cache.cbm_len = 20;
>> + max_cbm = resctrl_get_default_ctrl(r);
>>
>> if (wrmsrl_safe(MSR_IA32_L3_CBM_BASE, max_cbm))
>> return;
>
> It is unclear to me why this architecture code continues to use
> resctrl_get_default_ctrl() while you switched away from it in the other
> architecture code.
> As resctrl_get_default_ctrl() is "intended for callers that don't know
> or care what the format is" [1], here it clearly is required to be a
> bitmask. Using resctrl_get_default_ctrl() here also seems to contradict
> your argument for not using it in cbm_validate(). [1]
Sure, I'll drop this hunk on the same reasoning.
Thanks,
James
Powered by blists - more mailing lists