kvm: fix cpuid eax
Subsystems (4)
PATCH v2 1/1 kvm: fix cpuid eax
cpuid eax should return the max leaf so that guests can find out the valid range. This matches Xen et al.
Update documentation to match.
Tested with -cpu host.
Signed-off-by Michael S. Tsirkin <[email protected]>
---
Changes from v1:
Updated documentation.
Documentation/virtual/kvm/cpuid.txt | 6 +++++- arch/x86/kvm/cpuid.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-)
Documentation/virtual/kvm/cpuid.txt +5 -1
@@ -10,11 +10,15 @@ a guest. KVM cpuid functions are: function: KVM_CPUID_SIGNATURE (0x40000000) -returns : eax = 0, +returns : eax = 0x40000001, ebx = 0x4b4d564b, ecx = 0x564b4d56, edx = 0x4d. Note that this value in ebx, ecx and edx corresponds to the string "KVMKVMKVM". +The value in eax corresponds to the maximum cpuid function present in this leaf, +and will be updated if more functions are added in the future. +Note also that old hosts set eax value to 0x0. This should +be interpreted as if the value was 0x40000001. This function queries the presence of KVM cpuid leafs.
arch/x86/kvm/cpuid.c +1 -1
@@ -397,7 +397,7 @@ static int do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,case KVM_CPUID_SIGNATURE : {char signature[12 ] ="KVMKVMKVM\0\0" ;u32 *sigptr = (u32 *)signature; - entry->eax =0 ; + entry->eax =KVM_CPUID_FEATURES ; entry->ebx = sigptr[0 ]; entry->ecx = sigptr[1 ]; entry->edx = sigptr[2 ];
Signature · 1 line
MST
Avi Kivity
AppliedQuoted 8 lines · Michael S. Tsirkin
cpuid eax should return the max leaf so that guests can find out the valid range. This matches Xen et al.
Update documentation to match.Tested with -cpu host.
Thanks, applied.
Signature · 1 line
error compiling committee.c: too many arguments to function