From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54804) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aW3iz-0006P6-68 for qemu-devel@nongnu.org; Wed, 17 Feb 2016 10:09:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aW3iv-0003IJ-4o for qemu-devel@nongnu.org; Wed, 17 Feb 2016 10:09:05 -0500 Received: from mx2.parallels.com ([199.115.105.18]:55601) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aW3iu-0003Hu-VX for qemu-devel@nongnu.org; Wed, 17 Feb 2016 10:09:01 -0500 References: <1455364815-19586-1-git-send-email-den@openvz.org> From: "Denis V. Lunev" Message-ID: <56C48CFE.6040507@openvz.org> Date: Wed, 17 Feb 2016 18:08:46 +0300 MIME-Version: 1.0 In-Reply-To: <1455364815-19586-1-git-send-email-den@openvz.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v2 1/1] hyperv: cpu hotplug fix with HyperV enabled List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , =?UTF-8?Q?Andreas_F=c3=a4rber?= , qemu-devel@nongnu.org, Eduardo Habkost , Richard Henderson On 02/13/2016 03:00 PM, Denis V. Lunev wrote: > 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" > --- > Changes from v1: > - dropped command line option and set the bit if HyperV is enabled and > hot_add_cpu callback is present > > target-i386/kvm.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/target-i386/kvm.c b/target-i386/kvm.c > index 94024bc..63dee9c 100644 > --- a/target-i386/kvm.c > +++ b/target-i386/kvm.c > @@ -639,6 +639,9 @@ int kvm_arch_init_vcpu(CPUState *cs) > if (cpu->hyperv_crash && has_msr_hv_crash) { > c->edx |= HV_X64_GUEST_CRASH_MSR_AVAILABLE; > } > + if (MACHINE_GET_CLASS(current_machine)->hot_add_cpu != NULL) { > + c->edx |= HV_X64_CPU_DYNAMIC_PARTITIONING_AVAILABLE; > + } > if (cpu->hyperv_reset && has_msr_hv_reset) { > c->eax |= HV_X64_MSR_RESET_AVAILABLE; > } ping