From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= Subject: Re: [PATCH] Revert "target-ppc: Create versionless CPU class per family if KVM" Date: Mon, 02 Mar 2015 15:07:39 +0100 Message-ID: <54F46EAB.6090205@suse.de> References: <1425169895-10783-1-git-send-email-afaerber@suse.de> <54F4678D.20909@suse.de> <54F468D5.2060407@suse.de> <54F46AF7.60209@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Alexey Kardashevskiy , qemu-stable@nongnu.org, Paolo Bonzini , qemu-ppc , kvm To: Alexander Graf , qemu-devel@nongnu.org Return-path: Received: from cantor2.suse.de ([195.135.220.15]:33968 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753725AbbCBOHm (ORCPT ); Mon, 2 Mar 2015 09:07:42 -0500 In-Reply-To: <54F46AF7.60209@suse.de> Sender: kvm-owner@vger.kernel.org List-ID: Am 02.03.2015 um 14:51 schrieb Alexander Graf: > On 02.03.15 14:42, Andreas F=C3=A4rber wrote: >> Am 02.03.2015 um 14:37 schrieb Alexander Graf: >>> On 01.03.15 01:31, Andreas F=C3=A4rber wrote: >>>> This reverts commit 5b79b1cadd3e565b6d1a5ba59764bd47af58b271 to av= oid >>>> double-registration of types: >>>> >>>> Registering `POWER5+-powerpc64-cpu' which already exists >>>> >>>> Taking the textual description of a CPU type as part of a new type= name >>>> is plain wrong, and so is unconditionally registering a new type h= ere. >>>> >>>> Cc: Alexey Kardashevskiy >>>> Cc: qemu-stable@nongnu.org >>>> Signed-off-by: Andreas F=C3=A4rber >>> >>> Doesn't this break p8 support? >> >> Maybe, but p5 support was in longer and this is definitely a regress= ion >> and really really wrong. If you know a way to fix it without handing= it >> back to the IBM guys for more thought, feel free to give it a shot. >=20 > I honestly don't fully remember what this was about. Wasn't this our > special KVM class that we use to create a compatible cpu type on the = fly? No, the class I create on the fly is a few lines above: pvr_pcc =3D ppc_cpu_class_by_pvr(host_pvr); if (pvr_pcc =3D=3D NULL) { pvr_pcc =3D ppc_cpu_class_by_pvr_mask(host_pvr); } if (pvr_pcc =3D=3D NULL) { return -1; } type_info.parent =3D object_class_get_name(OBJECT_CLASS(pvr_pcc)); type_register(&type_info); So, if no matching class is returned, we never reach the offending code= =2E Here, a second type with the same parent was being created in the kvm_ppc_register_host_cpu_type() function that is supposed to create that host CPU type. Why? The host CPU type by definition should already have the right PVR taken from the host. kvmppc_host_cpu_class_init(): /* Now fix up the class with information we can query from the host= */ pcc->pvr =3D mfpvr(); > Alexey, please take a look at it. Thanks, Andreas --=20 SUSE Linux GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Felix Imend=C3=B6rffer, Jane Smithard, Jennifer Guild, Dilip Upmany= u, Graham Norton; HRB 21284 (AG N=C3=BCrnberg)