[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 12/26] x86/cpu: Move set_cpumask() calls into c_early_init()
On Wed, Mar 23, 2016 at 04:36:15PM +0000, Andrew Cooper wrote: > Before c/s 44e24f8567 "x86: don't call generic_identify() redundantly", the > commandline-provided masks would take effect in Xen's view of the features. s/the// ? Or perhaps s/the/cpuid// ? > > As the masks got applied after the query for features, the redundant call to > generic_identify() would clobber the pre-masking feature information with the > post-masking information. > > Move the set_cpumask() calls into c_early_init() so their effects take place s/their effects take/it's effect takes/ > before the main query for features in generic_identify(). .. and unifying all c_early_init() functions behavior? > > The cpuid_mask_* command line parameters now limit the entire system, a > feature XenServer was relying on for testing purposes. Subsequent changes .. what are those changes? Could you mention the title of the patch perhaps? > will cause the mask MSRs to be context switched per-domain, removing the need > to use the command line parameters for heterogeneous levelling purposes. > > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Besides those little nitpicks: Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > --- > CC: Jan Beulich <JBeulich@xxxxxxxx> > --- > xen/arch/x86/cpu/amd.c | 8 ++++++-- > xen/arch/x86/cpu/intel.c | 34 +++++++++++++++++----------------- > 2 files changed, 23 insertions(+), 19 deletions(-) > > diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c > index 47a38c6..5516777 100644 > --- a/xen/arch/x86/cpu/amd.c > +++ b/xen/arch/x86/cpu/amd.c > @@ -407,6 +407,11 @@ static void amd_get_topology(struct cpuinfo_x86 *c) > c->cpu_core_id); > } > > +static void early_init_amd(struct cpuinfo_x86 *c) > +{ > + set_cpuidmask(c); > +} > + > static void init_amd(struct cpuinfo_x86 *c) > { > u32 l, h; > @@ -595,14 +600,13 @@ static void init_amd(struct cpuinfo_x86 *c) > if ((smp_processor_id() == 1) && !cpu_has(c, X86_FEATURE_ITSC)) > disable_c1_ramping(); > > - set_cpuidmask(c); > - > check_syscfg_dram_mod_en(); > } > > static const struct cpu_dev amd_cpu_dev = { > .c_vendor = "AMD", > .c_ident = { "AuthenticAMD" }, > + .c_early_init = early_init_amd, > .c_init = init_amd, > }; > > diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c > index bdf89f6..ad22375 100644 > --- a/xen/arch/x86/cpu/intel.c > +++ b/xen/arch/x86/cpu/intel.c > @@ -189,6 +189,23 @@ static void early_init_intel(struct cpuinfo_x86 *c) > if (boot_cpu_data.x86 == 0xF && boot_cpu_data.x86_model == 3 && > (boot_cpu_data.x86_mask == 3 || boot_cpu_data.x86_mask == 4)) > paddr_bits = 36; > + > + if (c == &boot_cpu_data && c->x86 == 6) { > + if (probe_intel_cpuid_faulting()) > + __set_bit(X86_FEATURE_CPUID_FAULTING, > + c->x86_capability); > + } else if (boot_cpu_has(X86_FEATURE_CPUID_FAULTING)) { > + BUG_ON(!probe_intel_cpuid_faulting()); > + __set_bit(X86_FEATURE_CPUID_FAULTING, c->x86_capability); > + } > + > + if (!cpu_has_cpuid_faulting) > + set_cpuidmask(c); > + else if ((c == &boot_cpu_data) && > + (~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx & > + opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx & > + opt_cpuid_mask_xsave_eax))) > + printk("No CPUID feature masking support available\n"); > } > > /* > @@ -258,23 +275,6 @@ static void init_intel(struct cpuinfo_x86 *c) > detect_ht(c); > } > > - if (c == &boot_cpu_data && c->x86 == 6) { > - if (probe_intel_cpuid_faulting()) > - __set_bit(X86_FEATURE_CPUID_FAULTING, > - c->x86_capability); > - } else if (boot_cpu_has(X86_FEATURE_CPUID_FAULTING)) { > - BUG_ON(!probe_intel_cpuid_faulting()); > - __set_bit(X86_FEATURE_CPUID_FAULTING, c->x86_capability); > - } > - > - if (!cpu_has_cpuid_faulting) > - set_cpuidmask(c); > - else if ((c == &boot_cpu_data) && > - (~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx & > - opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx & > - opt_cpuid_mask_xsave_eax))) > - printk("No CPUID feature masking support available\n"); > - > /* Work around errata */ > Intel_errata_workarounds(c); > > -- > 2.1.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |