From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCvDE-0000px-6V for qemu-devel@nongnu.org; Tue, 14 Jun 2016 16:45:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bCvD9-0003k3-Po for qemu-devel@nongnu.org; Tue, 14 Jun 2016 16:45:27 -0400 Received: from mail-db5eur01on0104.outbound.protection.outlook.com ([104.47.2.104]:61152 helo=EUR01-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCvD9-0003jM-4d for qemu-devel@nongnu.org; Tue, 14 Jun 2016 16:45:23 -0400 References: <1465900120-2350-1-git-send-email-den@openvz.org> <20160614195921.GK17952@thinpad.lan.raisama.net> From: "Denis V. Lunev" Message-ID: <57606CD4.4020609@openvz.org> Date: Tue, 14 Jun 2016 23:45:08 +0300 MIME-Version: 1.0 In-Reply-To: <20160614195921.GK17952@thinpad.lan.raisama.net> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/1] cpu: report hyperv feature words through qom List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: qemu-devel@nongnu.org, Evgeny Yakovlev , Marcelo Tosatti , Paolo Bonzini , Richard Henderson On 06/14/2016 10:59 PM, Eduardo Habkost wrote: > On Tue, Jun 14, 2016 at 01:28:40PM +0300, Denis V. Lunev wrote: >> From: Evgeny Yakovlev >> >> This change adds hyperv feature words report through qom rpc. >> >> When VM is configured with hyperv features enabled libvirt will check that >> required featured words are set in cpuid leaf 40000003 through qom >> request. >> >> Currently qemu does not report hyperv feature words which prevents windows >> guests from starting with libvirt. >> >> Signed-off-by: Evgeny Yakovlev >> Signed-off-by: Denis V. Lunev >> CC: Paolo Bonzini >> CC: Richard Henderson >> CC: Eduardo Habkost >> CC: Marcelo Tosatti > Which QEMU version did you use to test this? Some of those properties already > exist. See: > > static Property x86_cpu_properties[] = { > [...] > { .name = "hv-spinlocks", .info = &qdev_prop_spinlocks }, > 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-crash", X86CPU, hyperv_crash, 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("hv-synic", X86CPU, hyperv_synic, false), > DEFINE_PROP_BOOL("hv-stimer", X86CPU, hyperv_stimer, false), > [...] > DEFINE_PROP_STRING("hv-vendor-id", X86CPU, hyperv_vendor_id), > DEFINE_PROP_END_OF_LIST() > }; > > QEMU will crash if you try to register the properties twice: > > $ ./x86_64-softmmu/qemu-system-x86_64 > qemu-system-x86_64: /home/ehabkost/rh/proj/virt/qemu/target-i386/cpu.c:3094: x86_cpu_register_bit_prop: Assertion `fp->ptr == field' failed. > Aborted (core dumped) > > I like the idea of moving hyperv feature information inside the features array, > though. no, idea is a bit different. The user selects properties in the command line to enable different HyperV enlightenments. This is how we do that and this is how the QEMU is expected to work. After that libvirt starts to check that these properties do work. In order to do that it executes qom-get and expects to find enabled HyperV enlightenments in the guest CPUID. This is the idea of this patch.