Skip to contentSkip to conversation

kvm: fix cpuid eax

PATCH Applied Michael S. Tsirkin 2 participants 2 messages May 2, 2012 – May 6, 2012

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

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.

---

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
index 8820685..83afe65 100644
@@ -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
index 9fed5be..eba8345 100644
@@ -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
Applied
#1 lore raw
Quoted 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