[linux-yocto] [yocto-4.12][PATCH 1/3] x86/intel_rdt: Move special case code for Haswell to a quirk function
Bruce Ashfield
bruce.ashfield at windriver.com
Tue Jan 9 10:19:56 PST 2018
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