[v7,08/17] target-i386: Use x86_set_hyperv to set hypervisor vendor.

Submitted by Don Slutz on Oct. 12, 2012, 7:56 p.m.

Details

Message ID 1350071782-23078-9-git-send-email-Don@CloudSwitch.com
State New
Headers show

Commit Message

Don Slutz Oct. 12, 2012, 7:56 p.m.
Part of "target-i386: Add way to expose VMWare CPUID"

At this stage it is used to set the cpu object's hypervisor vendor
to the default for Microsoft's Hypervisor ("Microsoft Hv").

Also known as Paravirtualization vendor.
This is EBX, ECX, EDX data for 0x40000000.

QEMU knows this is KVM_CPUID_SIGNATURE (0x40000000).

This is based on:

Microsoft Hypervisor CPUID Leaves:
  http://msdn.microsoft.com/en-us/library/windows/hardware/ff542428%28v=vs.85%29.aspx

Signed-off-by: Don Slutz <Don@CloudSwitch.com>
---
 target-i386/cpu.c |    2 ++
 target-i386/cpu.h |    1 +
 2 files changed, 3 insertions(+), 0 deletions(-)

Patch hide | download patch | download mbox

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 283ac01..958be81 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1257,6 +1257,8 @@  static void x86_set_hyperv(Object *obj, Error **errp)
 {
     object_property_set_int(obj, CPUID_HV_LEVEL_HYPERV_CPUID_MIN,
                             "hypervisor-level", errp);
+    object_property_set_str(obj, CPUID_HV_VENDOR_HYPERV,
+                            "hypervisor-vendor", errp);
 }
 
 static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque,
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index cd4e83c..f2045d6 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -491,6 +491,7 @@ 
 /* The maximum input value for hypervisor CPUID information for
  * Microsoft hypervisors.  Is related to HYPERV_CPUID_MIN. */
 #define CPUID_HV_LEVEL_HYPERV_CPUID_MIN  0x40000005
+#define CPUID_HV_VENDOR_HYPERV "Microsoft Hv"
 
 #define CPUID_MWAIT_IBE     (1 << 1) /* Interrupts can exit capability */
 #define CPUID_MWAIT_EMX     (1 << 0) /* enumeration supported */