From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [RFC PATCH] Emulate MOVBE Date: Wed, 17 Apr 2013 12:42:30 +0200 Message-ID: <516E7C96.3070800@redhat.com> References: <20130409234602.GI5077@pd.tnic> <20130410112942.07dfc167@slackpad> <20130410100845.GB17919@redhat.com> <516D3A62.6030708@redhat.com> <20130416172856.GD5807@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Andre Przywara , Borislav Petkov , kvm@vger.kernel.org, =?ISO-8859-1?Q?J=F6rg_R=F6del?= , "H. Peter Anvin" , x86-ml , kvm@vger-kernel.org To: Gleb Natapov Return-path: Received: from mx1.redhat.com ([209.132.183.28]:18913 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752415Ab3DQKm7 (ORCPT ); Wed, 17 Apr 2013 06:42:59 -0400 In-Reply-To: <20130416172856.GD5807@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Il 16/04/2013 19:28, Gleb Natapov ha scritto: > > This does highlight a weakness in CPU_GET_SUPPORTED_CPUID, but I think > > this is not a problem in practice. > > > > With a management layer such as oVirt it's not a problem. For example, > > oVirt has its own library of processors. It doesn't care if KVM enables > > movbe. If you tell it your datacenter is a mix of Haswells and Sandy > > Bridges it will pick the CPUID bits that are common to all. > > > > However, even without a suitable management layer it is also not really > > a problem. > > > > The only processors that support MOVBE are Atom and Haswell. Haswell > > adds a whole lot of extra CPUID features, hence "-cpu Haswell,enforce" > > will fail with or without movbe emulation. "-cpu Haswell" will disable > > all Haswell new features except movbe will remain slow; that's fine, I > > think, anyway it's not what you'ld do except to play with CPU models. > > No that's not fine. KVM should not trick userspace (QEMU is just one of > them) into nonoptimal configuration. And you forgot about -cpu host in your > analysis. "-cpu host" enables bits that are not in the host, but that's a QEMU bug. If the host lacks x2apic, for example, "-cpu host" should not enable it even if it is there in KVM_GET_SUPPORTED_CPUID. Now, KVM_GET_SUPPORTED_CPUID is a pretty bad interface for implementing a sane "CPU as similar to the host's as possible" policy. That's another story and I agree. It's a very sane policy for simple userspaces like lkvm. Paolo