@@ -126,6 +126,7 @@ struct cpuinfo_x86 {
#define X86_HYPER_VENDOR_NONE 0
#define X86_HYPER_VENDOR_VMWARE 1
+#define X86_HYPER_VENDOR_KVM 2
/*
* capabilities of CPUs
@@ -23,6 +23,7 @@
#include <asm/processor.h>
#include <asm/vmware.h>
+#include <asm/kvm_para.h>
#include <asm/hypervisor.h>
static inline void __cpuinit
@@ -30,6 +31,8 @@ detect_hypervisor_vendor(struct cpuinfo_x86 *c)
{
if (vmware_platform()) {
c->x86_hyper_vendor = X86_HYPER_VENDOR_VMWARE;
+ } else if (kvm_para_available()) {
+ c->x86_hyper_vendor = X86_HYPER_VENDOR_KVM;
} else {
c->x86_hyper_vendor = X86_HYPER_VENDOR_NONE;
}
KVM has a specific cpuid signature, for a long time now. It's currently used in the kernel to advertise the possible availability of paravirt functions, but it's safe to assume that any reasonably recent kvm hypervisor will sign cpuid this way, regardless of any pv capability. Signed-off-by: Glauber Costa <glommer@redhat.com> --- arch/x86/include/asm/processor.h | 1 + arch/x86/kernel/cpu/hypervisor.c | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-)