[Qemu-devel] [PULL 1/2] hyperv: cpu hotplug fix with HyperV enabled

2016-03-14 Thread Eduardo Habkost
From: "Denis V. Lunev" 

With Hyper-V enabled CPU hotplug stops working. The CPU appears
in device manager on Windows but does not appear in peformance
monitor and control panel.

The root of the problem is the following. Windows checks
HV_X64_CPU_DYNAMIC_PARTITIONING_AVAILABLE bit in CPUID. The
presence of this bit is enough to cure the situation.

The bit should be set when CPU hotplug is allowed for HyperV VM.
The check that hot_add_cpu callback is defined is enough from the
protocol point of view. Though this callback is defined almost
always thus there is no need to export that knowledge in the
other way.

Signed-off-by: Denis V. Lunev 
Reviewed-by: Roman Kagan 
CC: Paolo Bonzini 
CC: Richard Henderson 
CC: Eduardo Habkost 
CC: "Andreas Färber" 
Reviewed-by: Eduardo Habkost 
Signed-off-by: Eduardo Habkost 
---
 target-i386/kvm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 7974acb..08d6444 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -639,6 +639,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
 if (cpu->hyperv_crash && has_msr_hv_crash) {
 c->edx |= HV_X64_GUEST_CRASH_MSR_AVAILABLE;
 }
+c->edx |= HV_X64_CPU_DYNAMIC_PARTITIONING_AVAILABLE;
 if (cpu->hyperv_reset && has_msr_hv_reset) {
 c->eax |= HV_X64_MSR_RESET_AVAILABLE;
 }
-- 
2.1.0




[Qemu-devel] [PULL 1/2] hyperv: cpu hotplug fix with HyperV enabled

2016-03-11 Thread Eduardo Habkost
From: "Denis V. Lunev" 

With Hyper-V enabled CPU hotplug stops working. The CPU appears
in device manager on Windows but does not appear in peformance
monitor and control panel.

The root of the problem is the following. Windows checks
HV_X64_CPU_DYNAMIC_PARTITIONING_AVAILABLE bit in CPUID. The
presence of this bit is enough to cure the situation.

The bit should be set when CPU hotplug is allowed for HyperV VM.
The check that hot_add_cpu callback is defined is enough from the
protocol point of view. Though this callback is defined almost
always thus there is no need to export that knowledge in the
other way.

Signed-off-by: Denis V. Lunev 
Reviewed-by: Roman Kagan 
CC: Paolo Bonzini 
CC: Richard Henderson 
CC: Eduardo Habkost 
CC: "Andreas Färber" 
Reviewed-by: Eduardo Habkost 
Signed-off-by: Eduardo Habkost 
---
 roms/SLOF | 2 +-
 roms/openbios | 2 +-
 target-i386/kvm.c | 1 +
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/roms/SLOF b/roms/SLOF
index e3d0572..b4c9380 16
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit e3d05727a074619fc12d0a67f05cf2c42c875cce
+Subproject commit b4c93802a5b2c72f096649c497ec9ff5708e4456
diff --git a/roms/openbios b/roms/openbios
index 0dbda5d..bd95e4c 16
--- a/roms/openbios
+++ b/roms/openbios
@@ -1 +1 @@
-Subproject commit 0dbda5d935f95391d16431cd3c079fbf53d668df
+Subproject commit bd95e4c193905d5ed867e96f1a720ce4cb53b59f
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 7974acb..08d6444 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -639,6 +639,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
 if (cpu->hyperv_crash && has_msr_hv_crash) {
 c->edx |= HV_X64_GUEST_CRASH_MSR_AVAILABLE;
 }
+c->edx |= HV_X64_CPU_DYNAMIC_PARTITIONING_AVAILABLE;
 if (cpu->hyperv_reset && has_msr_hv_reset) {
 c->eax |= HV_X64_MSR_RESET_AVAILABLE;
 }
-- 
2.1.0