diff options
Diffstat (limited to 'arch/x86/kernel/cpu/hypervisor.c')
-rw-r--r-- | arch/x86/kernel/cpu/hypervisor.c | 10 |
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 | ||
28 | static inline void __cpuinit | 29 | static 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) | |||
37 | static inline void __cpuinit | 40 | static inline void __cpuinit |
38 | hypervisor_set_feature_bits(struct cpuinfo_x86 *c) | 41 | hypervisor_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 | ||
46 | void __cpuinit init_hypervisor(struct cpuinfo_x86 *c) | 50 | void __cpuinit init_hypervisor(struct cpuinfo_x86 *c) |