|
From: | Don Slutz |
Subject: | Re: [Qemu-devel] [PATCH v3 05/17] target-i386: Add x86_set_hyperv. |
Date: | Wed, 19 Sep 2012 17:26:01 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0 |
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 <address@hidden> --- 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 #endifI 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
[Prev in Thread] | Current Thread | [Next in Thread] |