x86: Print the hypervisor returned tsc_khz during boot
authorAlok Kataria <akataria@vmware.com>
Fri, 4 Sep 2009 20:13:39 +0000 (13:13 -0700)
committerIngo Molnar <mingo@elte.hu>
Sun, 20 Sep 2009 18:25:36 +0000 (20:25 +0200)
On an AMD-64 system the processor frequency that is printed during
system boot, may be different than the tsc frequency that was
returned by the hypervisor, due to the value returned from
calibrate_cpu.

For debugging timekeeping or other related issues it might be
better to get the tsc_khz value returned by the hypervisor.

The patch below now prints the tsc frequency that the VMware
hypervisor returned.

Signed-off-by: Alok N Kataria <akataria@vmware.com>
LKML-Reference: <1252095219.12518.13.camel@ank32.eng.vmware.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/vmware.c

index 0a46b4df5d80ea2f97e9800b884a1a80ee27b9a8..1cbed97b59cf841d8c41b4466ac040cf1c794b03 100644 (file)
@@ -58,6 +58,9 @@ static unsigned long vmware_get_tsc_khz(void)
        tsc_hz = eax | (((uint64_t)ebx) << 32);
        do_div(tsc_hz, 1000);
        BUG_ON(tsc_hz >> 32);
+       printk(KERN_INFO "TSC freq read from hypervisor : %lu.%03lu MHz\n",
+                        (unsigned long) tsc_hz / 1000,
+                        (unsigned long) tsc_hz % 1000);
        return tsc_hz;
 }
 
@@ -69,6 +72,9 @@ void __init vmware_platform_setup(void)
 
        if (ebx != UINT_MAX)
                x86_platform.calibrate_tsc = vmware_get_tsc_khz;
+       else
+               printk(KERN_WARNING
+                      "Failed to get TSC freq from the hypervisor\n");
 }
 
 /*