[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86/boot: Print the CPU model string alongside the Family/Model/Stepping info
This is also useful information when looking at boot logs. To do this, reuse get_model_name() which requires c->extended_cpuid_level to be calculated. early_cpu_init() already opencodes the calculation, so set c->extended_cpuid_level directly. While playing in this area, clean up get_model_name(). Its use in generic_identify() makes the sole external call from the Centaur code redundant. Make it local and switch to using a boolean return value. As sample boot now looks like: (XEN) CPU Vendor: Intel, Family 6 (0x6), Model 60 (0x3c), Stepping 3 (raw 000306c3) (XEN) CPU Model: Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- xen/arch/x86/cpu/centaur.c | 1 - xen/arch/x86/cpu/common.c | 15 ++++++++++----- xen/arch/x86/cpu/cpu.h | 1 - 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/cpu/centaur.c b/xen/arch/x86/cpu/centaur.c index 34a5bfc..0e634a1 100644 --- a/xen/arch/x86/cpu/centaur.c +++ b/xen/arch/x86/cpu/centaur.c @@ -44,7 +44,6 @@ static void init_c3(struct cpuinfo_x86 *c) __set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); } - get_model_name(c); display_cacheinfo(c); } diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index fa8548e..12172aa 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -188,13 +188,13 @@ void ctxt_switch_levelling(const struct vcpu *next) bool_t opt_cpu_info; boolean_param("cpuinfo", opt_cpu_info); -int get_model_name(struct cpuinfo_x86 *c) +static bool get_model_name(struct cpuinfo_x86 *c) { unsigned int *v; char *p, *q; if (c->extended_cpuid_level < 0x80000004) - return 0; + return false; v = (unsigned int *) c->x86_model_id; cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); @@ -214,7 +214,7 @@ int get_model_name(struct cpuinfo_x86 *c) *q++ = '\0'; /* Zero-pad the rest */ } - return 1; + return true; } @@ -303,13 +303,18 @@ void __init early_cpu_init(void) c->x86_capability[cpufeat_word(X86_FEATURE_FPU)] = edx; c->x86_capability[cpufeat_word(X86_FEATURE_SSE3)] = ecx; + c->extended_cpuid_level = cpuid_eax(0x80000000); + if ((c->extended_cpuid_level >> 16) != 0x8000) + c->extended_cpuid_level = 0; + printk(XENLOG_INFO "CPU Vendor: %s, Family %u (%#x), Model %u (%#x), Stepping %u (raw %08x)\n", x86_cpuid_vendor_to_str(c->x86_vendor), c->x86, c->x86, c->x86_model, c->x86_model, c->x86_mask, eax); + if (get_model_name(c)) + printk(XENLOG_INFO "CPU Model: %.48s\n", c->x86_model_id); - eax = cpuid_eax(0x80000000); - if ((eax >> 16) == 0x8000 && eax >= 0x80000008) { + if (c->extended_cpuid_level >= 0x80000008) { eax = cpuid_eax(0x80000008); paddr_bits = eax & 0xff; if (paddr_bits > PADDR_BITS) diff --git a/xen/arch/x86/cpu/cpu.h b/xen/arch/x86/cpu/cpu.h index 54bd0d3..d30f42b 100644 --- a/xen/arch/x86/cpu/cpu.h +++ b/xen/arch/x86/cpu/cpu.h @@ -12,5 +12,4 @@ extern unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx; extern unsigned int opt_cpuid_mask_xsave_eax; extern unsigned int opt_cpuid_mask_ext_ecx, opt_cpuid_mask_ext_edx; -extern int get_model_name(struct cpuinfo_x86 *c); extern void display_cacheinfo(struct cpuinfo_x86 *c); -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |