From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60888) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TERmW-0004OV-EZ for qemu-devel@nongnu.org; Wed, 19 Sep 2012 17:26:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TERmV-0002L2-Ca for qemu-devel@nongnu.org; Wed, 19 Sep 2012 17:26:04 -0400 Received: from hub021-nj-4.exch021.serverdata.net ([206.225.164.219]:17011) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TERmV-0002Kr-8L for qemu-devel@nongnu.org; Wed, 19 Sep 2012 17:26:03 -0400 Message-ID: <505A3869.3080209@CloudSwitch.com> Date: Wed, 19 Sep 2012 17:26:01 -0400 From: Don Slutz MIME-Version: 1.0 References: <1346354435-21685-1-git-send-email-Don@CloudSwitch.com> <1347890467-9728-6-git-send-email-Don@CloudSwitch.com> <20120919193220.GN3983@otherpad.lan.raisama.net> In-Reply-To: <20120919193220.GN3983@otherpad.lan.raisama.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 05/17] target-i386: Add x86_set_hyperv. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: peter.maydell@linaro.org, kvm@vger.kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, avi@redhat.com, anthony@codemonkey.ws, imammedo@redhat.com, afaerber@suse.de On 09/19/12 15:32, Eduardo Habkost wrote: > On Mon, Sep 17, 2012 at 10:00:55AM -0400, Don Slutz wrote: >> This is used to set the cpu object's hypervisor level to the default for Microsoft's Hypervisor. >> >> Signed-off-by: Don Slutz >> --- >> target-i386/cpu.c | 10 ++++++++++ >> 1 files changed, 10 insertions(+), 0 deletions(-) >> >> diff --git a/target-i386/cpu.c b/target-i386/cpu.c >> index 0e4a18d..4120393 100644 >> --- a/target-i386/cpu.c >> +++ b/target-i386/cpu.c >> @@ -1192,6 +1192,13 @@ static void x86_cpuid_set_hv_level(Object *obj, Visitor *v, void *opaque, >> } >> >> #if !defined(CONFIG_USER_ONLY) >> +static void x86_set_hyperv(Object *obj, Error **errp) >> +{ >> + X86CPU *cpu = X86_CPU(obj); >> + >> + cpu->env.cpuid_hv_level = HYPERV_CPUID_MIN; > HYPERV_CPUID_MIN is defined on linux-headers/asm-x86/hyperv.h, that is > included only if build host is linux-x86 and CONFIG_KVM is set. > Will fix. I see 3 options: 1) Use the numbers like 0x40000005 2) Use QEMU defines like: #define CPUID_HV_LEVEL_HYPERV 0x40000005 3) Use condtional define: #ifndef HYPERV_CPUID_MIN #define CPUID_HV_LEVEL_HYPERV 0x40000005 #else #define CPUID_HV_LEVEL_HYPERV HYPERV_CPUID_MIN #endif I lean to #2 of #3 and both over #1. This is because if in the future if HYPERV_CPUID_MIN ever changes then a patch to QEMU needs to be done and considered before that change can be seen by a guest. Note: since hypervisor-level=0x40000006 can be specified, this might be enough to do some testing. Please advise. >> +} >> + >> static void x86_get_hv_spinlocks(Object *obj, Visitor *v, void *opaque, >> const char *name, Error **errp) >> { >> @@ -1214,6 +1221,7 @@ static void x86_set_hv_spinlocks(Object *obj, Visitor *v, void *opaque, >> return; >> } >> hyperv_set_spinlock_retries(value); >> + x86_set_hyperv(obj, errp); >> } >> >> static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque, >> @@ -1234,6 +1242,7 @@ static void x86_set_hv_relaxed(Object *obj, Visitor *v, void *opaque, >> return; >> } >> hyperv_enable_relaxed_timing(value); >> + x86_set_hyperv(obj, errp); >> } >> >> static void x86_get_hv_vapic(Object *obj, Visitor *v, void *opaque, >> @@ -1254,6 +1263,7 @@ static void x86_set_hv_vapic(Object *obj, Visitor *v, void *opaque, >> return; >> } >> hyperv_enable_vapic_recommended(value); >> + x86_set_hyperv(obj, errp); >> } >> #endif >> >> -- >> 1.7.1 >> >> -Don Slutz