Jan Beulich
2012-May-30 15:04 UTC
[PATCH] x86/amd: re-enable CPU topology extensions in case BIOS has disabled it
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@amd.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/cpu/amd.c +++ b/xen/arch/x86/cpu/amd.c @@ -471,6 +471,21 @@ static void __devinit init_amd(struct cp } } + /* 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) && + !rdmsr_safe(MSR_K8_EXT_FEATURE_MASK, value)) { + value |= 1ULL << 54; + wrmsr_safe(MSR_K8_EXT_FEATURE_MASK, value); + rdmsrl(MSR_K8_EXT_FEATURE_MASK, value); + if (value & (1ULL << 54)) { + set_bit(X86_FEATURE_TOPOEXT, c->x86_capability); + printk(KERN_INFO "CPU: Re-enabling disabled " + "Topology Extensions Support\n"); + } + } + amd_get_topology(c); /* Pointless to use MWAIT on Family10 as it does not deep sleep. */ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Keir Fraser
2012-May-30 15:23 UTC
Re: [PATCH] x86/amd: re-enable CPU topology extensions in case BIOS has disabled it
On 30/05/2012 16:04, "Jan Beulich" <JBeulich@suse.com> wrote:> BIOS will switch off the corresponding feature flag on family > 15h models 10h-1fh non-desktop CPUs.Why would it do that? It seems silly.> 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@amd.com> > Signed-off-by: Jan Beulich <jbeulich@suse.com>Assuming there''s no good reason for the BIOS having disabled the feature... Acked-by: Keir Fraser <keir@xen.org>> --- a/xen/arch/x86/cpu/amd.c > +++ b/xen/arch/x86/cpu/amd.c > @@ -471,6 +471,21 @@ static void __devinit init_amd(struct cp > } > } > > + /* 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) && > + !rdmsr_safe(MSR_K8_EXT_FEATURE_MASK, value)) { > + value |= 1ULL << 54; > + wrmsr_safe(MSR_K8_EXT_FEATURE_MASK, value); > + rdmsrl(MSR_K8_EXT_FEATURE_MASK, value); > + if (value & (1ULL << 54)) { > + set_bit(X86_FEATURE_TOPOEXT, c->x86_capability); > + printk(KERN_INFO "CPU: Re-enabling disabled " > + "Topology Extensions Support\n"); > + } > + } > + > amd_get_topology(c); > > /* Pointless to use MWAIT on Family10 as it does not deep sleep. */ > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
Jan Beulich
2012-May-30 15:44 UTC
Re: [PATCH] x86/amd: re-enable CPU topology extensions in case BIOS has disabled it
>>> On 30.05.12 at 17:23, Keir Fraser <keir.xen@gmail.com> wrote: > On 30/05/2012 16:04, "Jan Beulich" <JBeulich@suse.com> wrote: > >> BIOS will switch off the corresponding feature flag on family >> 15h models 10h-1fh non-desktop CPUs. > > Why would it do that? It seems silly.Indeed. But the change comes from Linux 3.4. Andreas, Andre? Jan