On Mon, 2012-04-30 at 14:45 +0300, Gleb Natapov wrote:
> 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 <[email protected]>
> 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;
> }
Wouldn't this be better?
--- a/arch/x86/include/asm/kvm_para.h
+++ b/arch/x86/include/asm/kvm_para.h
@@ -170,6 +170,9 @@ static inline int kvm_para_available(void)
unsigned int eax, ebx, ecx, edx;
char signature[13];
+ if (!cpu_has_hypervisor)
+ return 0;
+
cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
memcpy(signature + 0, &ebx, 4);
memcpy(signature + 4, &ecx, 4);
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html