From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= Subject: Re: [Qemu-devel] [PATCH 27/28] target-i386: kvm_cpu_fill_host: use GET_SUPPORTED_CPUID Date: Fri, 02 Nov 2012 16:52:49 +0100 Message-ID: <5093EC51.4000307@suse.de> References: <12869995ea4f436ab76af5059fd2e9ae83c6cf9d.1351676406.git.mtosatti@redhat.com> <5093E7E8.4030007@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org To: Marcelo Tosatti , Anthony Liguori , Eduardo Habkost Return-path: Received: from cantor2.suse.de ([195.135.220.15]:34657 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754415Ab2KBPwx (ORCPT ); Fri, 2 Nov 2012 11:52:53 -0400 In-Reply-To: <5093E7E8.4030007@suse.de> Sender: kvm-owner@vger.kernel.org List-ID: Am 02.11.2012 16:34, schrieb Andreas F=E4rber: > Am 31.10.2012 10:40, schrieb Marcelo Tosatti: >> From: Eduardo Habkost >> >> Change the kvm_cpu_fill_host() function to use >> kvm_arch_get_supported_cpuid() instead of running the CPUID instruct= ion >> directly, when checking for supported CPUID features. >> >> This should solve two problems at the same time: >> >> * "-cpu host" was not enabling features that don't need support on >> the host CPU (e.g. x2apic); >> * "check" and "enforce" options were not detecting problems when th= e >> host CPU did support a feature, but the KVM kernel code didn't >> support it. >> >> Signed-off-by: Eduardo Habkost >> Signed-off-by: Marcelo Tosatti >> --- >> target-i386/cpu.c | 25 +++++++++++++++---------- >> 1 files changed, 15 insertions(+), 10 deletions(-) >> >> diff --git a/target-i386/cpu.c b/target-i386/cpu.c >> index 390ed47..4c84e9f 100644 >> --- a/target-i386/cpu.c >> +++ b/target-i386/cpu.c >> @@ -773,13 +773,13 @@ static int cpu_x86_fill_model_id(char *str) >> */ >> static void kvm_cpu_fill_host(x86_def_t *x86_cpu_def) >> { >> + KVMState *s =3D kvm_state; >=20 > This broke the linux-user build: >=20 > target-i386/cpu.o: In function `kvm_cpu_fill_host': > /home/andreas/QEMU/qemu-rcar/target-i386/cpu.c:783: undefined referen= ce > to `kvm_state' > collect2: error: ld returned 1 exit status > make[1]: *** [qemu-i386] Fehler 1 > make: *** [subdir-i386-linux-user] Fehler 2 As a quickfix this would work, but strikes me as ugly: Signed-off-by: Andreas F=E4rber diff --git a/target-i386/cpu.c b/target-i386/cpu.c index c46286a..8663623 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -780,7 +780,11 @@ static int cpu_x86_fill_model_id(char *str) */ static void kvm_cpu_fill_host(x86_def_t *x86_cpu_def) { +#ifdef CONFIG_KVM KVMState *s =3D kvm_state; +#else + KVMState *s =3D NULL; +#endif uint32_t eax =3D 0, ebx =3D 0, ecx =3D 0, edx =3D 0; assert(kvm_enabled()); Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrn= berg