[linux-yocto] [yocto-4.12][PATCH 1/3] x86/intel_rdt: Move special case code for Haswell to a quirk function
qwang2
quanyang.wang at windriver.com
Tue Jan 9 18:07:21 PST 2018
Hi Bruce,
This commit is based on the patches at
https://www.mail-archive.com/linux-yocto@yoctoproject.org/msg06131.html.
It seems that those patches hasn't been merged, would you please help to
check it?
Thanks,
Quanyang
On 2018年01月10日 02:19, Bruce Ashfield wrote:
> This series doesn't apply to the current 4.12:
>
> -----------------
> Applying: x86/intel_rdt: Move special case code for Haswell to a quirk
> function
> error: patch failed: arch/x86/kernel/cpu/intel_rdt.c:172
> error: arch/x86/kernel/cpu/intel_rdt.c: patch does not apply
> Patch failed at 0001 x86/intel_rdt: Move special case code for Haswell
> to a quirk function
> The copy of the patch that failed is found in:
> /home/bruce/poky-kernel/linux-yocto-4.12.git/.git/rebase-apply/patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> ---------------
>
> Can you double check that the 4.12 you used to generate this series
> matches what I have staged on git.yoctoproject.org.
>
> Bruce
>
> On 01/08/2018 10:20 PM, quanyang.wang at windriver.com wrote:
>> From: Tony Luck <tony.luck at intel.com>
>>
>> commit 0576113a387e0c8a5d9e24b4cd62605d1c9c0db8 upstream
>>
>> No functional change, but lay the ground work for other per-model
>> quirks.
>>
>> Signed-off-by: Tony Luck <tony.luck at intel.com>
>> Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
>> Cc: Fenghua" <fenghua.yu at intel.com>
>> Cc: Ravi V" <ravi.v.shankar at intel.com>
>> Cc: "Peter Zijlstra" <peterz at infradead.org>
>> Cc: "Stephane Eranian" <eranian at google.com>
>> Cc: "Andi Kleen" <ak at linux.intel.com>
>> Cc: "David Carrillo-Cisneros" <davidcc at google.com>
>> Cc: Vikas Shivappa <vikas.shivappa at linux.intel.com>
>> Link:
>> http://lkml.kernel.org/r/f195a83751b5f8b1d8a78bd3c1914300c8fa3142.1503512900.git.tony.luck@intel.com
>> ---
>> arch/x86/kernel/cpu/intel_rdt.c | 52
>> ++++++++++++++++++++++-------------------
>> 1 file changed, 28 insertions(+), 24 deletions(-)
>>
>> diff --git a/arch/x86/kernel/cpu/intel_rdt.c
>> b/arch/x86/kernel/cpu/intel_rdt.c
>> index dfc7c48..5af2f8f 100644
>> --- a/arch/x86/kernel/cpu/intel_rdt.c
>> +++ b/arch/x86/kernel/cpu/intel_rdt.c
>> @@ -172,34 +172,28 @@ static unsigned int cbm_idx(struct rdt_resource
>> *r, unsigned int closid)
>> * is always 20 on hsw server parts. The minimum cache bitmask length
>> * allowed for HSW server is always 2 bits. Hardcode all of them.
>> */
>> -static inline bool cache_alloc_hsw_probe(void)
>> +static inline void cache_alloc_hsw_probe(void)
>> {
>> - if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
>> - boot_cpu_data.x86 == 6 &&
>> - boot_cpu_data.x86_model == INTEL_FAM6_HASWELL_X) {
>> - struct rdt_resource *r = &rdt_resources_all[RDT_RESOURCE_L3];
>> - u32 l, h, max_cbm = BIT_MASK(20) - 1;
>> + struct rdt_resource *r = &rdt_resources_all[RDT_RESOURCE_L3];
>> + u32 l, h, max_cbm = BIT_MASK(20) - 1;
>> - if (wrmsr_safe(IA32_L3_CBM_BASE, max_cbm, 0))
>> - return false;
>> - rdmsr(IA32_L3_CBM_BASE, l, h);
>> -
>> - /* If all the bits were set in MSR, return success */
>> - if (l != max_cbm)
>> - return false;
>> + if (wrmsr_safe(IA32_L3_CBM_BASE, max_cbm, 0))
>> + return;
>> + rdmsr(IA32_L3_CBM_BASE, l, h);
>> - r->num_closid = 4;
>> - r->default_ctrl = max_cbm;
>> - r->cache.cbm_len = 20;
>> - r->cache.shareable_bits = 0xc0000;
>> - r->cache.min_cbm_bits = 2;
>> - r->alloc_capable = true;
>> - r->alloc_enabled = true;
>> + /* If all the bits were set in MSR, return success */
>> + if (l != max_cbm)
>> + return;
>> - return true;
>> - }
>> + r->num_closid = 4;
>> + r->default_ctrl = max_cbm;
>> + r->cache.cbm_len = 20;
>> + r->cache.shareable_bits = 0xc0000;
>> + r->cache.min_cbm_bits = 2;
>> + r->alloc_capable = true;
>> + r->alloc_enabled = true;
>> - return false;
>> + rdt_alloc_capable = true;
>> }
>> /*
>> @@ -648,7 +642,7 @@ static __init bool get_rdt_alloc_resources(void)
>> {
>> bool ret = false;
>> - if (cache_alloc_hsw_probe())
>> + if (rdt_alloc_capable)
>> return true;
>> if (!boot_cpu_has(X86_FEATURE_RDT_A))
>> @@ -690,8 +684,18 @@ static __init bool get_rdt_mon_resources(void)
>> return
>> !rdt_get_mon_l3_config(&rdt_resources_all[RDT_RESOURCE_L3]);
>> }
>> +static __init void rdt_quirks(void)
>> +{
>> + switch (boot_cpu_data.x86_model) {
>> + case INTEL_FAM6_HASWELL_X:
>> + cache_alloc_hsw_probe();
>> + break;
>> + }
>> +}
>> +
>> static __init bool get_rdt_resources(void)
>> {
>> + rdt_quirks();
>> rdt_alloc_capable = get_rdt_alloc_resources();
>> rdt_mon_capable = get_rdt_mon_resources();
>>
>
>
More information about the linux-yocto
mailing list