|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/tsc: Fix diagnostics for TSC frequency
On 05.08.2020 16:18, Andrew Cooper wrote:
> A Gemini Lake platform prints:
>
> (XEN) CPU0: TSC: 19200000MHz * 279 / 3 = 1785600000MHz
> (XEN) CPU0: 800..1800 MHz
>
> during boot. The units on the first line are Hz, not MHz, so correct that and
> add a space for clarity.
>
> Also, for the min/max line, use three dots instead of two and add more spaces
> so that the line can't be mistaken for being a double decimal point typo.
>
> Boot now reads:
>
> (XEN) CPU0: TSC: 19200000 Hz * 279 / 3 = 1785600000 Hz
> (XEN) CPU0: 800 ... 1800 MHz
>
> Extend these changes to the other TSC diagnostics.
I'm happy to see the unit mistake fixed, but the choice of
formatting was pretty deliberate when the code was introduced:
As dense as possible without making things unreadable or
ambiguous. (Considering "a double decimal point typo" looks
like a joke to me, really.)
> --- a/xen/arch/x86/cpu/intel.c
> +++ b/xen/arch/x86/cpu/intel.c
> @@ -396,14 +396,14 @@ static void intel_log_freq(const struct cpuinfo_x86 *c)
>
> val *= ebx;
> do_div(val, eax);
> - printk("CPU%u: TSC: %uMHz * %u / %u = %LuMHz\n",
> + printk("CPU%u: TSC: %u Hz * %u / %u = %Lu Hz\n",
> smp_processor_id(), ecx, ebx, eax, val);
For this one I wonder whether ecx wouldn't better be scaled down to
kHz, and val down to MHz.
> }
> else if ( ecx | eax | ebx )
> {
> printk("CPU%u: TSC:", smp_processor_id());
> if ( ecx )
> - printk(" core: %uMHz", ecx);
> + printk(" core: %u MHz", ecx);
This one now clearly wants to say Hz too, or (as above) scaling
down to kHz. With at least this last issue addressed
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
albeit I'd much prefer if the formatting adjustments were dropped.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |