From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:36820) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TqPTK-0004jQ-F1 for qemu-devel@nongnu.org; Wed, 02 Jan 2013 09:39:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TqPTJ-0004Su-4t for qemu-devel@nongnu.org; Wed, 02 Jan 2013 09:39:10 -0500 Received: from cantor2.suse.de ([195.135.220.15]:53256 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TqPTI-0004Sk-SI for qemu-devel@nongnu.org; Wed, 02 Jan 2013 09:39:09 -0500 Message-ID: <50E44687.9050902@suse.de> Date: Wed, 02 Jan 2013 15:39:03 +0100 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1356719854-16401-1-git-send-email-ehabkost@redhat.com> <1356719854-16401-2-git-send-email-ehabkost@redhat.com> In-Reply-To: <1356719854-16401-2-git-send-email-ehabkost@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 1/2] target-i386: kvm: -cpu host: use GET_SUPPORTED_CPUID for SVM features List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: kvm@vger.kernel.org, Gleb Natapov , Joerg Roedel , Marcelo Tosatti , qemu-devel@nongnu.org, Igor Mammedov Am 28.12.2012 19:37, schrieb Eduardo Habkost: > The existing -cpu host code simply set every bit inside svm_features > (initializing it to -1), and that makes it impossible to make the > enforce/check options work properly when the user asks for SVM features > explicitly in the command-line. >=20 > So, instead of initializing svm_features to -1, use GET_SUPPORTED_CPUID > to fill only the bits that are supported by the host (just like we do > for all other CPUID feature words inside kvm_cpu_fill_host()). >=20 > This will keep the existing behavior (as filter_features_for_kvm() > already uses GET_SUPPORTED_CPUID to filter svm_features), but will allo= w > us to properly check for KVM features inside > kvm_check_features_against_host() later. >=20 > For example, we will be able to make this: >=20 > $ qemu-system-x86_64 -cpu ...,+pfthreshold,enforce >=20 > refuse to start if the SVM "pfthreshold" feature is not supported by th= e > host (after we fix kvm_check_features_against_host() to check SVM flags > as well). >=20 > Signed-off-by: Eduardo Habkost > --- > target-i386/cpu.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) >=20 > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > index 3cd1cee..6e2d32d 100644 > --- a/target-i386/cpu.c > +++ b/target-i386/cpu.c > @@ -897,13 +897,10 @@ static void kvm_cpu_fill_host(x86_def_t *x86_cpu_= def) > } > } > =20 > - /* > - * Every SVM feature requires emulation support in KVM - so we can= 't just > - * read the host features here. KVM might even support SVM feature= s not > - * available on the host hardware. Just set all bits and mask out = the > - * unsupported ones later. > - */ > - x86_cpu_def->svm_features =3D -1; > + /* Other KVM-specific feature fields: */ > + x86_cpu_def->svm_features =3D > + kvm_arch_get_supported_cpuid(s, 0x8000000A, 0, R_EDX); Is there no #define for this, similar to KVM_CPUID_FEATURES in 2/2? FWIW indentation looks odd. Andreas > + > #endif /* CONFIG_KVM */ > } > =20 >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg