qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation
@ 2015-09-16  9:59 Denis V. Lunev
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 1/3] target-i386/kvm: Hyper-V HV_X64_MSR_RESET support Denis V. Lunev
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Denis V. Lunev @ 2015-09-16  9:59 UTC (permalink / raw)
  Cc: Eduardo Habkost, Marcelo Tosatti, qemu-devel, Paolo Bonzini,
	Andrey Smetanin, Denis V. Lunev, Andreas Färber,
	Richard Henderson

Hyper-V reset, vp index, vp runtime support is required to
support loading Windows guest driver Winhv.sys. Winhv.sys in guest
is required to support Windows VMBus.

These changes are simple and straightforward. Let's them go first.

Paolo, I am sending these patches without taking into account your
patchset with header cleanup. Should we do something? I would be also
be happy to hear news about remaining patches from Andrey about HyperV
panic. Please let us know is something from our side will improve the
situation.

Signed-off-by: Andrey Smetanin <asmetanin@virtuozzo.com>
Reviewed-by: Roman Kagan <rkagan@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Andreas Färber" <afaerber@suse.de>
CC: Marcelo Tosatti <mtosatti@redhat.com>

Andrey Smetanin (3):
  target-i386/kvm: Hyper-V HV_X64_MSR_RESET support
  target-i386/kvm: set Hyper-V features cpuid bit
    HV_X64_MSR_VP_INDEX_AVAILABLE
  target-i386/kvm: Hyper-V HV_X64_MSR_VP_RUNTIME support

 linux-headers/asm-x86/hyperv.h |  6 ++++++
 target-i386/cpu-qom.h          |  3 +++
 target-i386/cpu.c              |  3 +++
 target-i386/cpu.h              |  1 +
 target-i386/kvm.c              | 39 ++++++++++++++++++++++++++++++++++++++-
 target-i386/machine.c          | 20 ++++++++++++++++++++
 6 files changed, 71 insertions(+), 1 deletion(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 1/3] target-i386/kvm: Hyper-V HV_X64_MSR_RESET support
  2015-09-16  9:59 [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Denis V. Lunev
@ 2015-09-16  9:59 ` Denis V. Lunev
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 2/3] target-i386/kvm: set Hyper-V features cpuid bit HV_X64_MSR_VP_INDEX_AVAILABLE Denis V. Lunev
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Denis V. Lunev @ 2015-09-16  9:59 UTC (permalink / raw)
  Cc: Eduardo Habkost, Marcelo Tosatti, qemu-devel, Paolo Bonzini,
	Andrey Smetanin, Denis V. Lunev, Andreas Färber,
	Richard Henderson

From: Andrey Smetanin <asmetanin@virtuozzo.com>

HV_X64_MSR_RESET msr is used by Hyper-V based Windows guest
to reset guest VM by hypervisor. This msr is stateless so
no migration/fetch/update is required.

This code checks cpu option "hv-reset" and support by
kernel. If both conditions are met appropriate Hyper-V features
cpuid bit is set.

Signed-off-by: Andrey Smetanin <asmetanin@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Andreas Färber" <afaerber@suse.de>
CC: Marcelo Tosatti <mtosatti@redhat.com>
---
 linux-headers/asm-x86/hyperv.h |  3 +++
 target-i386/cpu-qom.h          |  1 +
 target-i386/cpu.c              |  1 +
 target-i386/kvm.c              | 11 ++++++++++-
 4 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/linux-headers/asm-x86/hyperv.h b/linux-headers/asm-x86/hyperv.h
index 8fba544..ba3a63b 100644
--- a/linux-headers/asm-x86/hyperv.h
+++ b/linux-headers/asm-x86/hyperv.h
@@ -149,6 +149,9 @@
 /* MSR used to provide vcpu index */
 #define HV_X64_MSR_VP_INDEX			0x40000002
 
+/* MSR used to reset the guest OS. */
+#define HV_X64_MSR_RESET               0x40000003
+
 /* MSR used to read the per-partition time reference counter */
 #define HV_X64_MSR_TIME_REF_COUNT		0x40000020
 
diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h
index 7a4fddd..3789a2f 100644
--- a/target-i386/cpu-qom.h
+++ b/target-i386/cpu-qom.h
@@ -89,6 +89,7 @@ typedef struct X86CPU {
     bool hyperv_relaxed_timing;
     int hyperv_spinlock_attempts;
     bool hyperv_time;
+    bool hyperv_reset;
     bool check_cpuid;
     bool enforce_cpuid;
     bool expose_kvm;
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index cfb8aa7..21828ad 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -3121,6 +3121,7 @@ static Property x86_cpu_properties[] = {
     DEFINE_PROP_BOOL("hv-relaxed", X86CPU, hyperv_relaxed_timing, false),
     DEFINE_PROP_BOOL("hv-vapic", X86CPU, hyperv_vapic, false),
     DEFINE_PROP_BOOL("hv-time", X86CPU, hyperv_time, false),
+    DEFINE_PROP_BOOL("hv-reset", X86CPU, hyperv_reset, false),
     DEFINE_PROP_BOOL("check", X86CPU, check_cpuid, false),
     DEFINE_PROP_BOOL("enforce", X86CPU, enforce_cpuid, false),
     DEFINE_PROP_BOOL("kvm", X86CPU, expose_kvm, true),
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 066d03d..37e82fb 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -80,6 +80,7 @@ static int lm_capable_kernel;
 static bool has_msr_hv_hypercall;
 static bool has_msr_hv_vapic;
 static bool has_msr_hv_tsc;
+static bool has_msr_hv_reset;
 static bool has_msr_mtrr;
 static bool has_msr_xss;
 
@@ -457,7 +458,8 @@ static bool hyperv_enabled(X86CPU *cpu)
     return kvm_check_extension(cs->kvm_state, KVM_CAP_HYPERV) > 0 &&
            (hyperv_hypercall_available(cpu) ||
             cpu->hyperv_time  ||
-            cpu->hyperv_relaxed_timing);
+            cpu->hyperv_relaxed_timing ||
+            cpu->hyperv_reset);
 }
 
 static Error *invtsc_mig_blocker;
@@ -523,6 +525,9 @@ int kvm_arch_init_vcpu(CPUState *cs)
             c->eax |= 0x200;
             has_msr_hv_tsc = true;
         }
+        if (cpu->hyperv_reset && has_msr_hv_reset) {
+            c->eax |= HV_X64_MSR_RESET_AVAILABLE;
+        }
         c = &cpuid_data.entries[cpuid_i++];
         c->function = HYPERV_CPUID_ENLIGHTMENT_INFO;
         if (cpu->hyperv_relaxed_timing) {
@@ -843,6 +848,10 @@ static int kvm_get_supported_msrs(KVMState *s)
                     has_msr_xss = true;
                     continue;
                 }
+                if (kvm_msr_list->indices[i] == HV_X64_MSR_RESET) {
+                    has_msr_hv_reset = true;
+                    continue;
+                }
             }
         }
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 2/3] target-i386/kvm: set Hyper-V features cpuid bit HV_X64_MSR_VP_INDEX_AVAILABLE
  2015-09-16  9:59 [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Denis V. Lunev
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 1/3] target-i386/kvm: Hyper-V HV_X64_MSR_RESET support Denis V. Lunev
@ 2015-09-16  9:59 ` Denis V. Lunev
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 3/3] target-i386/kvm: Hyper-V HV_X64_MSR_VP_RUNTIME support Denis V. Lunev
  2015-09-16 10:32 ` [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Paolo Bonzini
  3 siblings, 0 replies; 6+ messages in thread
From: Denis V. Lunev @ 2015-09-16  9:59 UTC (permalink / raw)
  Cc: Eduardo Habkost, Marcelo Tosatti, qemu-devel, Paolo Bonzini,
	Andrey Smetanin, Denis V. Lunev, Andreas Färber,
	Richard Henderson

From: Andrey Smetanin <asmetanin@virtuozzo.com>

Hyper-V features bit HV_X64_MSR_VP_INDEX_AVAILABLE value is
based on cpu option "hv-vpindex" and kernel support of
HV_X64_MSR_VP_INDEX.

Signed-off-by: Andrey Smetanin <asmetanin@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Andreas Färber" <afaerber@suse.de>
CC: Marcelo Tosatti <mtosatti@redhat.com>
---
 target-i386/cpu-qom.h |  1 +
 target-i386/cpu.c     |  1 +
 target-i386/kvm.c     | 11 ++++++++++-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h
index 3789a2f..85b9bd2 100644
--- a/target-i386/cpu-qom.h
+++ b/target-i386/cpu-qom.h
@@ -90,6 +90,7 @@ typedef struct X86CPU {
     int hyperv_spinlock_attempts;
     bool hyperv_time;
     bool hyperv_reset;
+    bool hyperv_vpindex;
     bool check_cpuid;
     bool enforce_cpuid;
     bool expose_kvm;
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 21828ad..86dc8fa 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -3122,6 +3122,7 @@ static Property x86_cpu_properties[] = {
     DEFINE_PROP_BOOL("hv-vapic", X86CPU, hyperv_vapic, false),
     DEFINE_PROP_BOOL("hv-time", X86CPU, hyperv_time, false),
     DEFINE_PROP_BOOL("hv-reset", X86CPU, hyperv_reset, false),
+    DEFINE_PROP_BOOL("hv-vpindex", X86CPU, hyperv_vpindex, false),
     DEFINE_PROP_BOOL("check", X86CPU, check_cpuid, false),
     DEFINE_PROP_BOOL("enforce", X86CPU, enforce_cpuid, false),
     DEFINE_PROP_BOOL("kvm", X86CPU, expose_kvm, true),
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 37e82fb..5bf2c51 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -81,6 +81,7 @@ static bool has_msr_hv_hypercall;
 static bool has_msr_hv_vapic;
 static bool has_msr_hv_tsc;
 static bool has_msr_hv_reset;
+static bool has_msr_hv_vpindex;
 static bool has_msr_mtrr;
 static bool has_msr_xss;
 
@@ -459,7 +460,8 @@ static bool hyperv_enabled(X86CPU *cpu)
            (hyperv_hypercall_available(cpu) ||
             cpu->hyperv_time  ||
             cpu->hyperv_relaxed_timing ||
-            cpu->hyperv_reset);
+            cpu->hyperv_reset ||
+            cpu->hyperv_vpindex);
 }
 
 static Error *invtsc_mig_blocker;
@@ -528,6 +530,9 @@ int kvm_arch_init_vcpu(CPUState *cs)
         if (cpu->hyperv_reset && has_msr_hv_reset) {
             c->eax |= HV_X64_MSR_RESET_AVAILABLE;
         }
+        if (cpu->hyperv_vpindex && has_msr_hv_vpindex) {
+            c->eax |= HV_X64_MSR_VP_INDEX_AVAILABLE;
+        }
         c = &cpuid_data.entries[cpuid_i++];
         c->function = HYPERV_CPUID_ENLIGHTMENT_INFO;
         if (cpu->hyperv_relaxed_timing) {
@@ -852,6 +857,10 @@ static int kvm_get_supported_msrs(KVMState *s)
                     has_msr_hv_reset = true;
                     continue;
                 }
+                if (kvm_msr_list->indices[i] == HV_X64_MSR_VP_INDEX) {
+                    has_msr_hv_vpindex = true;
+                    continue;
+                }
             }
         }
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 3/3] target-i386/kvm: Hyper-V HV_X64_MSR_VP_RUNTIME support
  2015-09-16  9:59 [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Denis V. Lunev
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 1/3] target-i386/kvm: Hyper-V HV_X64_MSR_RESET support Denis V. Lunev
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 2/3] target-i386/kvm: set Hyper-V features cpuid bit HV_X64_MSR_VP_INDEX_AVAILABLE Denis V. Lunev
@ 2015-09-16  9:59 ` Denis V. Lunev
  2015-09-16 10:32 ` [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Paolo Bonzini
  3 siblings, 0 replies; 6+ messages in thread
From: Denis V. Lunev @ 2015-09-16  9:59 UTC (permalink / raw)
  Cc: Eduardo Habkost, Marcelo Tosatti, qemu-devel, Paolo Bonzini,
	Andrey Smetanin, Denis V. Lunev, Andreas Färber,
	Richard Henderson

From: Andrey Smetanin <asmetanin@virtuozzo.com>

HV_X64_MSR_VP_RUNTIME msr used by guest to get
"the time the virtual processor consumes running guest code,
and the time the associated logical processor spends running
hypervisor code on behalf of that guest."

Calculation of that time is performed by task_cputime_adjusted()
for vcpu task by KVM side.

Signed-off-by: Andrey Smetanin <asmetanin@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Andreas Färber" <afaerber@suse.de>
CC: Marcelo Tosatti <mtosatti@redhat.com>
---
 linux-headers/asm-x86/hyperv.h |  3 +++
 target-i386/cpu-qom.h          |  1 +
 target-i386/cpu.c              |  1 +
 target-i386/cpu.h              |  1 +
 target-i386/kvm.c              | 21 ++++++++++++++++++++-
 target-i386/machine.c          | 20 ++++++++++++++++++++
 6 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/linux-headers/asm-x86/hyperv.h b/linux-headers/asm-x86/hyperv.h
index ba3a63b..77ecfb9 100644
--- a/linux-headers/asm-x86/hyperv.h
+++ b/linux-headers/asm-x86/hyperv.h
@@ -152,6 +152,9 @@
 /* MSR used to reset the guest OS. */
 #define HV_X64_MSR_RESET               0x40000003
 
+/* MSR used to provide vcpu runtime in 100ns units */
+#define HV_X64_MSR_VP_RUNTIME          0x40000010
+
 /* MSR used to read the per-partition time reference counter */
 #define HV_X64_MSR_TIME_REF_COUNT		0x40000020
 
diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h
index 85b9bd2..97068ba 100644
--- a/target-i386/cpu-qom.h
+++ b/target-i386/cpu-qom.h
@@ -91,6 +91,7 @@ typedef struct X86CPU {
     bool hyperv_time;
     bool hyperv_reset;
     bool hyperv_vpindex;
+    bool hyperv_runtime;
     bool check_cpuid;
     bool enforce_cpuid;
     bool expose_kvm;
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 86dc8fa..f9e9b20 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -3123,6 +3123,7 @@ static Property x86_cpu_properties[] = {
     DEFINE_PROP_BOOL("hv-time", X86CPU, hyperv_time, false),
     DEFINE_PROP_BOOL("hv-reset", X86CPU, hyperv_reset, false),
     DEFINE_PROP_BOOL("hv-vpindex", X86CPU, hyperv_vpindex, false),
+    DEFINE_PROP_BOOL("hv-runtime", X86CPU, hyperv_runtime, false),
     DEFINE_PROP_BOOL("check", X86CPU, check_cpuid, false),
     DEFINE_PROP_BOOL("enforce", X86CPU, enforce_cpuid, false),
     DEFINE_PROP_BOOL("kvm", X86CPU, expose_kvm, true),
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index af97772..4feede0 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -908,6 +908,7 @@ typedef struct CPUX86State {
     uint64_t msr_hv_guest_os_id;
     uint64_t msr_hv_vapic;
     uint64_t msr_hv_tsc;
+    uint64_t msr_hv_runtime;
 
     /* exception/interrupt handling */
     int error_code;
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 5bf2c51..9dc6057 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -82,6 +82,7 @@ static bool has_msr_hv_vapic;
 static bool has_msr_hv_tsc;
 static bool has_msr_hv_reset;
 static bool has_msr_hv_vpindex;
+static bool has_msr_hv_runtime;
 static bool has_msr_mtrr;
 static bool has_msr_xss;
 
@@ -461,7 +462,8 @@ static bool hyperv_enabled(X86CPU *cpu)
             cpu->hyperv_time  ||
             cpu->hyperv_relaxed_timing ||
             cpu->hyperv_reset ||
-            cpu->hyperv_vpindex);
+            cpu->hyperv_vpindex ||
+            cpu->hyperv_runtime);
 }
 
 static Error *invtsc_mig_blocker;
@@ -533,6 +535,9 @@ int kvm_arch_init_vcpu(CPUState *cs)
         if (cpu->hyperv_vpindex && has_msr_hv_vpindex) {
             c->eax |= HV_X64_MSR_VP_INDEX_AVAILABLE;
         }
+        if (cpu->hyperv_runtime && has_msr_hv_runtime) {
+            c->eax |= HV_X64_MSR_VP_RUNTIME_AVAILABLE;
+        }
         c = &cpuid_data.entries[cpuid_i++];
         c->function = HYPERV_CPUID_ENLIGHTMENT_INFO;
         if (cpu->hyperv_relaxed_timing) {
@@ -861,6 +866,10 @@ static int kvm_get_supported_msrs(KVMState *s)
                     has_msr_hv_vpindex = true;
                     continue;
                 }
+                if (kvm_msr_list->indices[i] == HV_X64_MSR_VP_RUNTIME) {
+                    has_msr_hv_runtime = true;
+                    continue;
+                }
             }
         }
 
@@ -1393,6 +1402,10 @@ static int kvm_put_msrs(X86CPU *cpu, int level)
             kvm_msr_entry_set(&msrs[n++], HV_X64_MSR_REFERENCE_TSC,
                               env->msr_hv_tsc);
         }
+        if (has_msr_hv_runtime) {
+            kvm_msr_entry_set(&msrs[n++], HV_X64_MSR_VP_RUNTIME,
+                              env->msr_hv_runtime);
+        }
         if (has_msr_mtrr) {
             kvm_msr_entry_set(&msrs[n++], MSR_MTRRdefType, env->mtrr_deftype);
             kvm_msr_entry_set(&msrs[n++],
@@ -1748,6 +1761,9 @@ static int kvm_get_msrs(X86CPU *cpu)
     if (has_msr_hv_tsc) {
         msrs[n++].index = HV_X64_MSR_REFERENCE_TSC;
     }
+    if (has_msr_hv_runtime) {
+        msrs[n++].index = HV_X64_MSR_VP_RUNTIME;
+    }
     if (has_msr_mtrr) {
         msrs[n++].index = MSR_MTRRdefType;
         msrs[n++].index = MSR_MTRRfix64K_00000;
@@ -1895,6 +1911,9 @@ static int kvm_get_msrs(X86CPU *cpu)
         case HV_X64_MSR_REFERENCE_TSC:
             env->msr_hv_tsc = msrs[i].data;
             break;
+        case HV_X64_MSR_VP_RUNTIME:
+            env->msr_hv_runtime = msrs[i].data;
+            break;
         case MSR_MTRRdefType:
             env->mtrr_deftype = msrs[i].data;
             break;
diff --git a/target-i386/machine.c b/target-i386/machine.c
index a0df64b..b219052 100644
--- a/target-i386/machine.c
+++ b/target-i386/machine.c
@@ -661,6 +661,25 @@ static const VMStateDescription vmstate_msr_hyperv_time = {
     }
 };
 
+static bool hyperv_runtime_enable_needed(void *opaque)
+{
+    X86CPU *cpu = opaque;
+    CPUX86State *env = &cpu->env;
+
+    return env->msr_hv_runtime != 0;
+}
+
+static const VMStateDescription vmstate_msr_hyperv_runtime = {
+    .name = "cpu/msr_hyperv_runtime",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .needed = hyperv_runtime_enable_needed,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT64(env.msr_hv_runtime, X86CPU),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static bool avx512_needed(void *opaque)
 {
     X86CPU *cpu = opaque;
@@ -842,6 +861,7 @@ VMStateDescription vmstate_x86_cpu = {
         &vmstate_msr_hypercall_hypercall,
         &vmstate_msr_hyperv_vapic,
         &vmstate_msr_hyperv_time,
+        &vmstate_msr_hyperv_runtime,
         &vmstate_avx512,
         &vmstate_xss,
         NULL
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation
  2015-09-16  9:59 [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Denis V. Lunev
                   ` (2 preceding siblings ...)
  2015-09-16  9:59 ` [Qemu-devel] [PATCH 3/3] target-i386/kvm: Hyper-V HV_X64_MSR_VP_RUNTIME support Denis V. Lunev
@ 2015-09-16 10:32 ` Paolo Bonzini
  2015-09-16 10:41   ` Denis V. Lunev
  3 siblings, 1 reply; 6+ messages in thread
From: Paolo Bonzini @ 2015-09-16 10:32 UTC (permalink / raw)
  To: Denis V. Lunev
  Cc: Eduardo Habkost, Marcelo Tosatti, qemu-devel, Andrey Smetanin,
	Andreas Färber, Richard Henderson



On 16/09/2015 11:59, Denis V. Lunev wrote:
> Hyper-V reset, vp index, vp runtime support is required to
> support loading Windows guest driver Winhv.sys. Winhv.sys in guest
> is required to support Windows VMBus.
> 
> These changes are simple and straightforward. Let's them go first.
> 
> Paolo, I am sending these patches without taking into account your
> patchset with header cleanup. Should we do something? I would be also
> be happy to hear news about remaining patches from Andrey about HyperV
> panic.

They didn't compile on ARM or Win32, hence the header file changes which
delayed them a bit.  But I still plan to send out the pull request very
soon, maybe today (ouch, it's already 12:30).

I wanted to include the record-replay patches, but they are big enough
that they probably deserve their own pull request, and my queue already
has 23 patches...

> Please let us know is something from our side will improve the
> situation.

No, it's just my issue.

However, there is something we can improve about the process.  QEMU
typically updates header files around 4.3-rc5 (by importing the changes
destined to 4.4), so we need a place to put this kind of patch that
depends on Linux header changes.  Therefore:

1) I've made a staging branch uq/hyperv (uq = upstream queue) on
git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git - you can base your
patches on that branch as soon as I create it.

2) if you have more changes to asm/hyperv.h, bundle them and send them
to kvm@vger.kernel.org.  I'll include them in kvm/queue all at the same
time, which will make header file synchronization less of a problem in
the future.

Paolo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation
  2015-09-16 10:32 ` [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Paolo Bonzini
@ 2015-09-16 10:41   ` Denis V. Lunev
  0 siblings, 0 replies; 6+ messages in thread
From: Denis V. Lunev @ 2015-09-16 10:41 UTC (permalink / raw)
  To: Paolo Bonzini, Denis V. Lunev
  Cc: Eduardo Habkost, Marcelo Tosatti, qemu-devel, Andrey Smetanin,
	Andreas Färber, Richard Henderson

On 09/16/2015 01:32 PM, Paolo Bonzini wrote:
>
> On 16/09/2015 11:59, Denis V. Lunev wrote:
>> Hyper-V reset, vp index, vp runtime support is required to
>> support loading Windows guest driver Winhv.sys. Winhv.sys in guest
>> is required to support Windows VMBus.
>>
>> These changes are simple and straightforward. Let's them go first.
>>
>> Paolo, I am sending these patches without taking into account your
>> patchset with header cleanup. Should we do something? I would be also
>> be happy to hear news about remaining patches from Andrey about HyperV
>> panic.
> They didn't compile on ARM or Win32, hence the header file changes which
> delayed them a bit.  But I still plan to send out the pull request very
> soon, maybe today (ouch, it's already 12:30).
>
> I wanted to include the record-replay patches, but they are big enough
> that they probably deserve their own pull request, and my queue already
> has 23 patches...
>
>> Please let us know is something from our side will improve the
>> situation.
> No, it's just my issue.
>
> However, there is something we can improve about the process.  QEMU
> typically updates header files around 4.3-rc5 (by importing the changes
> destined to 4.4), so we need a place to put this kind of patch that
> depends on Linux header changes.  Therefore:
>
> 1) I've made a staging branch uq/hyperv (uq = upstream queue) on
> git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git - you can base your
> patches on that branch as soon as I create it.
>
> 2) if you have more changes to asm/hyperv.h, bundle them and send them
> to kvm@vger.kernel.org.  I'll include them in kvm/queue all at the same
> time, which will make header file synchronization less of a problem in
> the future.
>
> Paolo
>
that sounds great to me. OK, will do.

Den

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-09-16 10:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-16  9:59 [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Denis V. Lunev
2015-09-16  9:59 ` [Qemu-devel] [PATCH 1/3] target-i386/kvm: Hyper-V HV_X64_MSR_RESET support Denis V. Lunev
2015-09-16  9:59 ` [Qemu-devel] [PATCH 2/3] target-i386/kvm: set Hyper-V features cpuid bit HV_X64_MSR_VP_INDEX_AVAILABLE Denis V. Lunev
2015-09-16  9:59 ` [Qemu-devel] [PATCH 3/3] target-i386/kvm: Hyper-V HV_X64_MSR_VP_RUNTIME support Denis V. Lunev
2015-09-16 10:32 ` [Qemu-devel] [PATCH 0/3] QEMU: necessary simple pre-requisites for VMBus emulation Paolo Bonzini
2015-09-16 10:41   ` Denis V. Lunev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).