From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aakc3-0007nR-4o for qemu-devel@nongnu.org; Tue, 01 Mar 2016 08:45:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aakby-0006gG-6G for qemu-devel@nongnu.org; Tue, 01 Mar 2016 08:45:19 -0500 Received: from mx2.parallels.com ([199.115.105.18]:54721) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aakby-0006fS-0s for qemu-devel@nongnu.org; Tue, 01 Mar 2016 08:45:14 -0500 References: <1456132382-25327-1-git-send-email-den@openvz.org> From: "Denis V. Lunev" Message-ID: <56D59CDE.20109@openvz.org> Date: Tue, 1 Mar 2016 16:45:02 +0300 MIME-Version: 1.0 In-Reply-To: <1456132382-25327-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 v3 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/22/2016 12:13 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 v2: > - bit set unconditionally upon the discussion > > 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 | 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; > } ping