From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH] KVM: add KVM_CAP_VMX_APICV to advertise hardware apic-v support Date: Thu, 11 Dec 2014 18:15:39 +0100 Message-ID: <5489D13B.3000703@redhat.com> References: <1418285221-14256-1-git-send-email-zhang.zhanghailiang@huawei.com> <5489849C.4010308@redhat.com> <548993D8.6010004@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Cc: gleb@kernel.org, peter.huangpeng@huawei.com To: zhanghailiang , kvm@vger.kernel.org Return-path: Received: from mail-qa0-f44.google.com ([209.85.216.44]:55784 "EHLO mail-qa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755654AbaLKRPn (ORCPT ); Thu, 11 Dec 2014 12:15:43 -0500 Received: by mail-qa0-f44.google.com with SMTP id i13so3936325qae.3 for ; Thu, 11 Dec 2014 09:15:43 -0800 (PST) In-Reply-To: <548993D8.6010004@huawei.com> Sender: kvm-owner@vger.kernel.org List-ID: On 11/12/2014 13:53, zhanghailiang wrote: > > >> I think it's a Windows bug---it should prefer x2apic to hv-vapic if both >> are available. >> > > No, i don't think it is a windows bug, it has nothing to do with x2apic, hv-vapic MSRs doesn't provide any performance improvement over x2apic MSRs. So Windows should use x2apic MSRs if both are available. Windows can use x2apic MSRs together with its EOI optimization, like Linux does. There definitely are Windows versions that know how to use x2apic (e.g. 2008R2). > but apic-v (need hardware support, i.e. Haswell cpu). APICv can use the x2apic MSRs. > When we don't passthough host cpu model to Guest os, > it has no idea about whether it supports apic-v in host, The presence of APICv should be totally transparent to the guest. > Actually, qemu has a option 'hv_vapic' for -cpu, we can choose not to > configure it if we know there is apic-v support in host. But IMHO, > we'd better to do it automatically. ... and cause the CPUID to change under the guest's feet if you migrate from a non-APICv to an APICv machines, or vice versa. Paolo