From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60213) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afmA4-0005rz-4Q for qemu-devel@nongnu.org; Tue, 15 Mar 2016 06:25:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1afmA2-0003mm-LZ for qemu-devel@nongnu.org; Tue, 15 Mar 2016 06:25:12 -0400 Date: Tue, 15 Mar 2016 20:45:45 +1100 From: David Gibson Message-ID: <20160315094545.GD9032@voom> References: <1457974600-13828-1-git-send-email-clg@fr.ibm.com> <1457974600-13828-5-git-send-email-clg@fr.ibm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="4zI0WCX1RcnW9Hbu" Content-Disposition: inline In-Reply-To: <1457974600-13828-5-git-send-email-clg@fr.ibm.com> Subject: Re: [Qemu-devel] [PATCH 04/17] ppc: Add number of threads per core to the processor definition List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?iso-8859-1?Q?C=E9dric?= Le Goater Cc: Thomas Huth , qemu-ppc@nongnu.org, qemu-devel@nongnu.org --4zI0WCX1RcnW9Hbu Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Mar 14, 2016 at 05:56:27PM +0100, C=E9dric Le Goater wrote: > From: Benjamin Herrenschmidt >=20 > Also use it to clamp the max SMT mode and ensure that the cpu_dt_id > are offset by that value in order to preserve consistency with the > HW implementations. I think this can change change CPU ids, and therefore break migration on some existing setups. So it will need some rework to apply at all, and will certainly want to wait until after 2.6 >=20 > Signed-off-by: Benjamin Herrenschmidt > --- > target-ppc/cpu-qom.h | 1 + > target-ppc/translate_init.c | 11 ++++++++++- > 2 files changed, 11 insertions(+), 1 deletion(-) >=20 > diff --git a/target-ppc/cpu-qom.h b/target-ppc/cpu-qom.h > index 7d5e2b36a997..735981309c5b 100644 > --- a/target-ppc/cpu-qom.h > +++ b/target-ppc/cpu-qom.h > @@ -68,6 +68,7 @@ typedef struct PowerPCCPUClass { > uint32_t flags; > int bfd_mach; > uint32_t l1_dcache_size, l1_icache_size; > + uint32_t threads_per_core; > #if defined(TARGET_PPC64) > const struct ppc_segment_page_sizes *sps; > #endif > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c > index 43c6e524a6bc..46dabe58783a 100644 > --- a/target-ppc/translate_init.c > +++ b/target-ppc/translate_init.c > @@ -8231,6 +8231,7 @@ POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data) > POWERPC_FLAG_BUS_CLK; > pcc->l1_dcache_size =3D 0x8000; > pcc->l1_icache_size =3D 0x10000; > + pcc->threads_per_core =3D 2; > } > =20 > static void powerpc_get_compat(Object *obj, Visitor *v, const char *name, > @@ -8408,6 +8409,7 @@ POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data) > pcc->l1_dcache_size =3D 0x8000; > pcc->l1_icache_size =3D 0x8000; > pcc->interrupts_big_endian =3D ppc_cpu_interrupts_big_endian_lpcr; > + pcc->threads_per_core =3D 4; > } > =20 > static void init_proc_POWER8(CPUPPCState *env) > @@ -8492,6 +8494,7 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data) > pcc->l1_dcache_size =3D 0x8000; > pcc->l1_icache_size =3D 0x8000; > pcc->interrupts_big_endian =3D ppc_cpu_interrupts_big_endian_lpcr; > + pcc->threads_per_core =3D 8; > } > #endif /* defined (TARGET_PPC64) */ > =20 > @@ -9195,6 +9198,12 @@ static void ppc_cpu_realizefn(DeviceState *dev, Er= ror **errp) > #endif > =20 > #if !defined(CONFIG_USER_ONLY) > + if (pcc->threads_per_core =3D=3D 0) { > + pcc->threads_per_core =3D 1; > + } > + if (max_smt > pcc->threads_per_core) { > + max_smt =3D pcc->threads_per_core; > + } > if (smp_threads > max_smt) { > error_setg(errp, "Cannot support more than %d threads on PPC wit= h %s", > max_smt, kvm_enabled() ? "KVM" : "TCG"); > @@ -9215,7 +9224,7 @@ static void ppc_cpu_realizefn(DeviceState *dev, Err= or **errp) > } > =20 > #if !defined(CONFIG_USER_ONLY) > - cpu->cpu_dt_id =3D (cs->cpu_index / smp_threads) * max_smt > + cpu->cpu_dt_id =3D (cs->cpu_index / smp_threads) * pcc->threads_per_= core > + (cs->cpu_index % smp_threads); > #endif > =20 --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --4zI0WCX1RcnW9Hbu Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJW59nJAAoJEGw4ysog2bOSgIYP/2MBohxIAj3duN+O/OAtasj5 V2hrCExns+c2SxbhRfPIehgX3ByWSK+omm/4Wwuqib2AhhEqJp6Zzt17XB/2wUhQ NgleqCY48DfL6RA0QxEU+rnbHoc4VClonHEe/JBAZxm05BFWF5cHqfyiH2VH0MH6 4ei0Fcd1SU4K9zfh/8bSiKYsbwMsI64Z/70yVSyRlfmVpf5S0RtOaPmIW+n+ZPJP rwQVRsVCZIg/3kVIMvh8a/SgCWQ62jetObAcMkK/bUQaj37DNAEIcc23H9jfhNGD twxepUGQefje64MwKl3DLOZFpVzv3qJWrbCAT5WWZyEB3Wj2tzSD6F6BSUBXJjaL xsh3UnwDjQKEjZoC/+l22JWVcZYfRB0eFxI55cLKPwh7i7c2PPti1+lwJrThnJVQ OcFtFra7ZpC2GocR/gW3hRmgJWgA1LpESgMtHBI0r3c8bVfzWi4WMMW/Bdb4B/P1 tVmsvow81l/7WSyB5boa1iYxacpTM2+npMgFa6mO9HvyWcwwU0qw/JCCMm7laTHH EQB0ZHDI9oxt9T6D/pO9St4UKD4N7lyE+euY5iZdxouwFZpFX6BYml7C8rrpGOwM VLhc8lIQ6a2kv4XtQXlj4aj8XoHuarCWix+rdw6sJbT0fTx0Pgm9LN2qCjtK3Ajw wvMmrc7slaKWfzTUygU3 =LGBj -----END PGP SIGNATURE----- --4zI0WCX1RcnW9Hbu--