x86/vmware: Use tsc_khz value for calibrate_cpu()
authorAlexey Makhalov <amakhalov@vmware.com>
Fri, 28 Oct 2016 07:54:30 +0000 (00:54 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 30 Oct 2016 07:57:07 +0000 (08:57 +0100)
Commit aa297292d708 ("x86/tsc: Enumerate SKL cpu_khz and tsc_khz via
CPUID") separated the calibration mechanisms for cpu_khz and tsc_khz.

Since the vmware hypervisor provides a constant frequency TSC to the guest,
this change can lead to divergence between the tsc and the cpu frequency
after vmotion, which might confuse the user.

Solve this by overriding the x86 platform cpu calibration callback with the
vmware specific tsc calibration function.

Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
Acked-by: Alok N Kataria <akataria@vmware.com>
Cc: linux-doc@vger.kernel.org
Cc: pv-drivers@vmware.com
Cc: corbet@lwn.net
Cc: virtualization@lists.linux-foundation.org
Link: http://lkml.kernel.org/r/20161028075432.90579-2-amakhalov@vmware.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/cpu/vmware.c

index 4e34da4be297a02a7ac9d1be1cf7a5c20b7ac9ea..480790fe2463c66d2b3ef97ce77d1e533ddf5fcb 100644 (file)
@@ -83,6 +83,7 @@ static void __init vmware_platform_setup(void)
 
                vmware_tsc_khz = tsc_khz;
                x86_platform.calibrate_tsc = vmware_get_tsc_khz;
+               x86_platform.calibrate_cpu = vmware_get_tsc_khz;
 
 #ifdef CONFIG_X86_LOCAL_APIC
                /* Skip lapic calibration since we know the bus frequency. */