aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/hypervisor.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/cpu/hypervisor.c')
-rw-r--r--arch/x86/kernel/cpu/hypervisor.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/x86/kernel/cpu/hypervisor.c b/arch/x86/kernel/cpu/hypervisor.c
index 08be922de33a..de3f4e0ce8eb 100644
--- a/arch/x86/kernel/cpu/hypervisor.c
+++ b/arch/x86/kernel/cpu/hypervisor.c
@@ -23,6 +23,7 @@
23 23
24#include <asm/processor.h> 24#include <asm/processor.h>
25#include <asm/vmware.h> 25#include <asm/vmware.h>
26#include <asm/mshyperv.h>
26#include <asm/hypervisor.h> 27#include <asm/hypervisor.h>
27 28
28static inline void __cpuinit 29static inline void __cpuinit
@@ -30,6 +31,8 @@ detect_hypervisor_vendor(struct cpuinfo_x86 *c)
30{ 31{
31 if (vmware_platform()) 32 if (vmware_platform())
32 c->x86_hyper_vendor = X86_HYPER_VENDOR_VMWARE; 33 c->x86_hyper_vendor = X86_HYPER_VENDOR_VMWARE;
34 else if (ms_hyperv_platform())
35 c->x86_hyper_vendor = X86_HYPER_VENDOR_MSFT;
33 else 36 else
34 c->x86_hyper_vendor = X86_HYPER_VENDOR_NONE; 37 c->x86_hyper_vendor = X86_HYPER_VENDOR_NONE;
35} 38}
@@ -37,10 +40,11 @@ detect_hypervisor_vendor(struct cpuinfo_x86 *c)
37static inline void __cpuinit 40static inline void __cpuinit
38hypervisor_set_feature_bits(struct cpuinfo_x86 *c) 41hypervisor_set_feature_bits(struct cpuinfo_x86 *c)
39{ 42{
40 if (boot_cpu_data.x86_hyper_vendor == X86_HYPER_VENDOR_VMWARE) { 43 if (boot_cpu_data.x86_hyper_vendor == X86_HYPER_VENDOR_VMWARE)
41 vmware_set_feature_bits(c); 44 vmware_set_feature_bits(c);
42 return; 45 else if (boot_cpu_data.x86_hyper_vendor == X86_HYPER_VENDOR_MSFT)
43 } 46 ms_hyperv_set_feature_bits(c);
47 return;
44} 48}
45 49
46void __cpuinit init_hypervisor(struct cpuinfo_x86 *c) 50void __cpuinit init_hypervisor(struct cpuinfo_x86 *c)