aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/cpu/vmware.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c
index 1ff0598d309c..81160578b91a 100644
--- a/arch/x86/kernel/cpu/vmware.c
+++ b/arch/x86/kernel/cpu/vmware.c
@@ -27,6 +27,7 @@
27#include <asm/div64.h> 27#include <asm/div64.h>
28#include <asm/x86_init.h> 28#include <asm/x86_init.h>
29#include <asm/hypervisor.h> 29#include <asm/hypervisor.h>
30#include <asm/apic.h>
30 31
31#define CPUID_VMWARE_INFO_LEAF 0x40000000 32#define CPUID_VMWARE_INFO_LEAF 0x40000000
32#define VMWARE_HYPERVISOR_MAGIC 0x564D5868 33#define VMWARE_HYPERVISOR_MAGIC 0x564D5868
@@ -82,10 +83,17 @@ static void __init vmware_platform_setup(void)
82 83
83 VMWARE_PORT(GETHZ, eax, ebx, ecx, edx); 84 VMWARE_PORT(GETHZ, eax, ebx, ecx, edx);
84 85
85 if (ebx != UINT_MAX) 86 if (ebx != UINT_MAX) {
86 x86_platform.calibrate_tsc = vmware_get_tsc_khz; 87 x86_platform.calibrate_tsc = vmware_get_tsc_khz;
87 else 88#ifdef CONFIG_X86_LOCAL_APIC
89 /* Skip lapic calibration since we know the bus frequency. */
90 lapic_timer_frequency = ecx / HZ;
91 pr_info("Host bus clock speed read from hypervisor : %u Hz\n",
92 ecx);
93#endif
94 } else {
88 pr_warn("Failed to get TSC freq from the hypervisor\n"); 95 pr_warn("Failed to get TSC freq from the hypervisor\n");
96 }
89} 97}
90 98
91/* 99/*