public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kvm_para_available() should check hypervisor bit before accessing hypervisor cpuid leaf.
@ 2012-04-30 11:45 Gleb Natapov
  2012-04-30 16:37 ` Davidlohr Bueso
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Gleb Natapov @ 2012-04-30 11:45 UTC (permalink / raw)
  To: kvm; +Cc: avi, mtosatti, mst

This couid range does not exist on real HW and Intel spec says that
"Information returned for highest basic information leaf" will be
returned. Not very well defined. 

Signed-off-by: Gleb Natapov <gleb@redhat.com>
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
index 99c4bbe..a7a7a94 100644
--- a/arch/x86/include/asm/kvm_para.h
+++ b/arch/x86/include/asm/kvm_para.h
@@ -178,14 +178,16 @@ static inline int kvm_para_available(void)
 	unsigned int eax, ebx, ecx, edx;
 	char signature[13];
 
-	cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
-	memcpy(signature + 0, &ebx, 4);
-	memcpy(signature + 4, &ecx, 4);
-	memcpy(signature + 8, &edx, 4);
-	signature[12] = 0;
-
-	if (strcmp(signature, "KVMKVMKVM") == 0)
-		return 1;
+	if (cpu_has_hypervisor) {
+		cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
+		memcpy(signature + 0, &ebx, 4);
+		memcpy(signature + 4, &ecx, 4);
+		memcpy(signature + 8, &edx, 4);
+		signature[12] = 0;
+
+		if (strcmp(signature, "KVMKVMKVM") == 0)
+			return 1;
+	}
 
 	return 0;
 }
--
			Gleb.

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-05-06 13:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-30 11:45 [PATCH] kvm_para_available() should check hypervisor bit before accessing hypervisor cpuid leaf Gleb Natapov
2012-04-30 16:37 ` Davidlohr Bueso
2012-05-01  6:52   ` Gleb Natapov
2012-05-01 12:50 ` Avi Kivity
2012-05-01 12:55   ` Gleb Natapov
2012-05-01 12:59     ` Avi Kivity
2012-05-02 12:09       ` Gleb Natapov
2012-05-06 12:55         ` Avi Kivity
2012-05-06 13:00 ` Avi Kivity

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox