kvm: Fix eax for cpuid leaf 0x40000000
authorJidong Xiao <jidong.xiao@gmail.com>
Wed, 4 Jun 2014 01:10:06 +0000 (21:10 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 4 Jun 2014 07:12:04 +0000 (09:12 +0200)
Since Linux kernel 3.5, KVM has documented eax for leaf 0x40000000
to be KVM_CPUID_FEATURES:

https://github.com/torvalds/linux/commit/57c22e5f35aa4b9b2fe11f73f3e62bbf9ef36190

But qemu still tries to set it to 0. It would be better to make qemu
and kvm consistent. This patch just fixes this issue.

Signed-off-by: Jidong Xiao <jidong.xiao@gmail.com>
[Include kvm_base in the value. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target-i386/kvm.c

index 40cd4b84afb1e8981e8d56ea70db8bcc6080efe5..4bf0ac9e76a082e43a1c58c86c5431ee01e16d93 100644 (file)
@@ -532,7 +532,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
         memcpy(signature, "KVMKVMKVM\0\0\0", 12);
         c = &cpuid_data.entries[cpuid_i++];
         c->function = KVM_CPUID_SIGNATURE | kvm_base;
-        c->eax = 0;
+        c->eax = KVM_CPUID_FEATURES | kvm_base;
         c->ebx = signature[0];
         c->ecx = signature[1];
         c->edx = signature[2];