From mboxrd@z Thu Jan 1 00:00:00 1970 From: Don Slutz Subject: [PATCH v7 09/17] target-i386: Use x86_set_hyperv to set hypervisor features. Date: Fri, 12 Oct 2012 15:56:14 -0400 Message-ID: <1350071782-23078-10-git-send-email-Don@CloudSwitch.com> References: <1350071782-23078-1-git-send-email-Don@CloudSwitch.com> Mime-Version: 1.0 Content-Type: text/plain Cc: Don Slutz To: , , , , , , , , Return-path: Received: from hub021-nj-6.exch021.serverdata.net ([206.225.164.222]:2813 "EHLO hub021-nj-6.exch021.serverdata.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751354Ab2JLT5S (ORCPT ); Fri, 12 Oct 2012 15:57:18 -0400 In-Reply-To: <1350071782-23078-1-git-send-email-Don@CloudSwitch.com> Sender: kvm-owner@vger.kernel.org List-ID: Part of "target-i386: Add way to expose VMWare CPUID" At this stage it is used to set the cpu object's hypervisor features to the default for Microsoft's Hypervisor ("Hv#1"). Also known as kvm festures or Hypervisor vendor-neutral interface identification. This is the EAX value for 0x40000001. QEMU knows this is KVM_CPUID_FEATURES (0x40000001) in some builds. 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 --- target-i386/cpu.c | 2 ++ target-i386/cpu.h | 1 + 2 files changed, 3 insertions(+), 0 deletions(-) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 958be81..f058add 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1259,6 +1259,8 @@ static void x86_set_hyperv(Object *obj, Error **errp) "hypervisor-level", errp); object_property_set_str(obj, CPUID_HV_VENDOR_HYPERV, "hypervisor-vendor", errp); + object_property_set_int(obj, CPUID_HV_FEATURES_HYPERV, + "hypervisor-features", 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 f2045d6..9a34c7b 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -492,6 +492,7 @@ * 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_HV_FEATURES_HYPERV 0x31237648 /* "Hv#1" */ #define CPUID_MWAIT_IBE (1 << 1) /* Interrupts can exit capability */ #define CPUID_MWAIT_EMX (1 << 0) /* enumeration supported */ -- 1.7.1