diff mbox

Qemu: Fix eax for cpuid leaf 0x40000000

Message ID CAG4AFWajxKx_VWMLGMzto19Tfk6XwtGpLa9H=bRGbug+3O6mBA@mail.gmail.com
State New
Headers show

Commit Message

Jidong Xiao June 4, 2014, 1:10 a.m. UTC
Hi,

Since Linux kernel 3.5, KVM has set eax to KVM_CPUID_FEATURES, for
leaf 0x40000000, see this:

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>
---

Comments

Paolo Bonzini June 4, 2014, 7:09 a.m. UTC | #1
Il 04/06/2014 03:10, Jidong Xiao ha scritto:
> diff --git a/qemu-2.0.0/target-i386/kvm.c.orig b/qemu-2.0.0/target-i386/kvm.c
> index 4389959..b8b282d 100644
> --- a/qemu-2.0.0/target-i386/kvm.c.orig
> +++ b/qemu-2.0.0/target-i386/kvm.c
> @@ -530,7 +530,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;
>      c->ebx = signature[0];
>      c->ecx = signature[1];
>      c->edx = signature[2];

This should actually be "KVM_CPUID_FEATURES | kvm_base", in case Hyper-V 
leaves are available too.  But it is a good catch!

Paolo
diff mbox

Patch

diff --git a/qemu-2.0.0/target-i386/kvm.c.orig b/qemu-2.0.0/target-i386/kvm.c
index 4389959..b8b282d 100644
--- a/qemu-2.0.0/target-i386/kvm.c.orig
+++ b/qemu-2.0.0/target-i386/kvm.c
@@ -530,7 +530,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;
     c->ebx = signature[0];
     c->ecx = signature[1];
     c->edx = signature[2];