Ack: [Oneiric SRU PATCH] x86/amd: Re-enable CPU topology extensions in case BIOS has disabled it

Brad Figg brad.figg at canonical.com
Thu Jun 14 17:57:58 UTC 2012


On 06/14/2012 07:40 AM, Tim Gardner wrote:
> From: Andreas Herrmann <andreas.herrmann3 at amd.com>
> 
> BugLink: http://bugs.launchpad.net/bugs/1009087
> 
> BIOS will switch off the corresponding feature flag on family
> 15h models 10h-1fh non-desktop CPUs.
> 
> The topology extension CPUID leafs are required to detect which
> cores belong to the same compute unit. (thread siblings mask is
> set accordingly and also correct information about L1i and L2
> cache sharing depends on this).
> 
> W/o this patch we wouldn't see which cores belong to the same
> compute unit and also cache sharing information for L1i and L2
> would be incorrect on such systems.
> 
> Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
> Signed-off-by: Ingo Molnar <mingo at kernel.org>
> (cherry picked from commit f7f286a910221ae18b21c18d9d0f4cd88965829f)
> 
> Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
> ---
>  arch/x86/kernel/cpu/amd.c |   18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index b6e3e87..ddcf1a9 100644
> --- a/arch/x86/kernel/cpu/amd.c
> +++ b/arch/x86/kernel/cpu/amd.c
> @@ -567,6 +567,24 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
>  		}
>  	}
>  
> +	/* re-enable TopologyExtensions if switched off by BIOS */
> +	if ((c->x86 == 0x15) &&
> +	    (c->x86_model >= 0x10) && (c->x86_model <= 0x1f) &&
> +	    !cpu_has(c, X86_FEATURE_TOPOEXT)) {
> +		u64 val;
> +
> +		if (!rdmsrl_amd_safe(0xc0011005, &val)) {
> +			val |= 1ULL << 54;
> +			wrmsrl_amd_safe(0xc0011005, val);
> +			rdmsrl(0xc0011005, val);
> +			if (val & (1ULL << 54)) {
> +				set_cpu_cap(c, X86_FEATURE_TOPOEXT);
> +				printk(KERN_INFO FW_INFO "CPU: Re-enabling "
> +				  "disabled Topology Extensions Support\n");
> +			}
> +		}
> +	}
> +
>  	cpu_detect_cache_sizes(c);
>  
>  	/* Multi core CPU? */


-- 
Brad Figg brad.figg at canonical.com http://www.canonical.com




More information about the kernel-team mailing list