From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39991) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YabD8-000482-8f for qemu-devel@nongnu.org; Tue, 24 Mar 2015 22:38:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YabD0-0001c3-BK for qemu-devel@nongnu.org; Tue, 24 Mar 2015 22:38:26 -0400 Date: Wed, 25 Mar 2015 13:06:31 +1100 From: David Gibson Message-ID: <20150325020631.GS25043@voom.fritz.box> References: <1427117764-23008-1-git-send-email-bharata@linux.vnet.ibm.com> <1427117764-23008-9-git-send-email-bharata@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="MiMBASdxvnz+XAiL" Content-Disposition: inline In-Reply-To: <1427117764-23008-9-git-send-email-bharata@linux.vnet.ibm.com> Subject: Re: [Qemu-devel] [RFC PATCH v2 08/23] ppc: Prepare CPU socket/core abstraction List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bharata B Rao Cc: mdroth@linux.vnet.ibm.com, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, tyreld@linux.vnet.ibm.com, nfont@linux.vnet.ibm.com, imammedo@redhat.com, afaerber@suse.de --MiMBASdxvnz+XAiL Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Mar 23, 2015 at 07:05:49PM +0530, Bharata B Rao wrote: Again, this needs a commit message explaining why the new abstraction is valuable. > Signed-off-by: Bharata B Rao > Signed-off-by: Andreas F=E4rber > --- > hw/ppc/Makefile.objs | 1 + > hw/ppc/cpu-core.c | 46 +++++++++++++++++++++++++++++++++++++++= +++++ > hw/ppc/cpu-socket.c | 47 +++++++++++++++++++++++++++++++++++++++= ++++++ > include/hw/ppc/cpu-core.h | 32 ++++++++++++++++++++++++++++++ > include/hw/ppc/cpu-socket.h | 32 ++++++++++++++++++++++++++++++ > 5 files changed, 158 insertions(+) > create mode 100644 hw/ppc/cpu-core.c > create mode 100644 hw/ppc/cpu-socket.c > create mode 100644 include/hw/ppc/cpu-core.h > create mode 100644 include/hw/ppc/cpu-socket.h >=20 > diff --git a/hw/ppc/Makefile.objs b/hw/ppc/Makefile.objs > index c8ab06e..a35cac5 100644 > --- a/hw/ppc/Makefile.objs > +++ b/hw/ppc/Makefile.objs > @@ -1,5 +1,6 @@ > # shared objects > obj-y +=3D ppc.o ppc_booke.o > +obj-y +=3D cpu-socket.o cpu-core.o > # IBM pSeries (sPAPR) > obj-$(CONFIG_PSERIES) +=3D spapr.o spapr_vio.o spapr_events.o > obj-$(CONFIG_PSERIES) +=3D spapr_hcall.o spapr_iommu.o spapr_rtas.o > diff --git a/hw/ppc/cpu-core.c b/hw/ppc/cpu-core.c > new file mode 100644 > index 0000000..ed0481f > --- /dev/null > +++ b/hw/ppc/cpu-core.c > @@ -0,0 +1,46 @@ > +/* > + * ppc CPU core abstraction > + * > + * Copyright (c) 2015 SUSE Linux GmbH > + * Copyright (C) 2015 Bharata B Rao > + */ > + > +#include "hw/qdev.h" > +#include "hw/ppc/cpu-core.h" > + > +static int ppc_cpu_core_realize_child(Object *child, void *opaque) > +{ > + Error **errp =3D opaque; > + > + object_property_set_bool(child, true, "realized", errp); > + if (*errp) { > + return 1; > + } > + > + return 0; > +} > + > +static void ppc_cpu_core_realize(DeviceState *dev, Error **errp) > +{ > + object_child_foreach(OBJECT(dev), ppc_cpu_core_realize_child, errp); > +} > + > +static void ppc_cpu_core_class_init(ObjectClass *oc, void *data) > +{ > + DeviceClass *dc =3D DEVICE_CLASS(oc); > + > + dc->realize =3D ppc_cpu_core_realize; > +} > + > +static const TypeInfo ppc_cpu_core_type_info =3D { > + .name =3D TYPE_POWERPC_CPU_CORE, > + .parent =3D TYPE_DEVICE, > + .class_init =3D ppc_cpu_core_class_init, > +}; > + > +static void ppc_cpu_core_register_types(void) > +{ > + type_register_static(&ppc_cpu_core_type_info); > +} > + > +type_init(ppc_cpu_core_register_types) > diff --git a/hw/ppc/cpu-socket.c b/hw/ppc/cpu-socket.c > new file mode 100644 > index 0000000..602a060 > --- /dev/null > +++ b/hw/ppc/cpu-socket.c > @@ -0,0 +1,47 @@ > +/* > + * PPC CPU socket abstraction > + * > + * Copyright (c) 2015 SUSE Linux GmbH > + * Copyright (C) 2015 Bharata B Rao > + */ > + > +#include "hw/qdev.h" > +#include "hw/ppc/cpu-socket.h" > +#include "sysemu/cpus.h" > + > +static int ppc_cpu_socket_realize_child(Object *child, void *opaque) > +{ > + Error **errp =3D opaque; > + > + object_property_set_bool(child, true, "realized", errp); > + if (*errp) { > + return 1; > + } else { > + return 0; > + } > +} > + > +static void ppc_cpu_socket_realize(DeviceState *dev, Error **errp) > +{ > + object_child_foreach(OBJECT(dev), ppc_cpu_socket_realize_child, errp= ); > +} > + > +static void ppc_cpu_socket_class_init(ObjectClass *oc, void *data) > +{ > + DeviceClass *dc =3D DEVICE_CLASS(oc); > + > + dc->realize =3D ppc_cpu_socket_realize; > +} > + > +static const TypeInfo ppc_cpu_socket_type_info =3D { > + .name =3D TYPE_POWERPC_CPU_SOCKET, > + .parent =3D TYPE_CPU_SOCKET, > + .class_init =3D ppc_cpu_socket_class_init, > +}; > + > +static void ppc_cpu_socket_register_types(void) > +{ > + type_register_static(&ppc_cpu_socket_type_info); > +} > + > +type_init(ppc_cpu_socket_register_types) > diff --git a/include/hw/ppc/cpu-core.h b/include/hw/ppc/cpu-core.h > new file mode 100644 > index 0000000..95f1c28 > --- /dev/null > +++ b/include/hw/ppc/cpu-core.h > @@ -0,0 +1,32 @@ > +/* > + * PowerPC CPU core abstraction > + * > + * Copyright (c) 2015 SUSE Linux GmbH > + * Copyright (C) 2015 Bharata B Rao > + */ > +#ifndef HW_PPC_CPU_CORE_H > +#define HW_PPC_CPU_CORE_H > + > +#include "hw/qdev.h" > +#include "cpu.h" > + > +#ifdef TARGET_PPC64 > +#define TYPE_POWERPC_CPU_CORE "powerpc64-cpu-core" > +#elif defined(TARGET_PPCEMB) > +#define TYPE_POWERPC_CPU_CORE "embedded-powerpc-cpu-core" > +#else > +#define TYPE_POWERPC_CPU_CORE "powerpc-cpu-core" > +#endif > + > +#define POWERPC_CPU_CORE(obj) \ > + OBJECT_CHECK(PowerPCCPUCore, (obj), TYPE_POWERPC_CPU_CORE) > + > +typedef struct PowerPCCPUCore { > + /*< private >*/ > + DeviceState parent_obj; > + /*< public >*/ > + > + PowerPCCPU thread[0]; > +} PowerPCCPUCore; > + > +#endif > diff --git a/include/hw/ppc/cpu-socket.h b/include/hw/ppc/cpu-socket.h > new file mode 100644 > index 0000000..5ae19d0 > --- /dev/null > +++ b/include/hw/ppc/cpu-socket.h > @@ -0,0 +1,32 @@ > +/* > + * PowerPC CPU socket abstraction > + * > + * Copyright (c) 2015 SUSE Linux GmbH > + * Copyright (C) 2015 Bharata B Rao > + */ > +#ifndef HW_PPC_CPU_SOCKET_H > +#define HW_PPC_CPU_SOCKET_H > + > +#include "hw/cpu/socket.h" > +#include "cpu-core.h" > + > +#ifdef TARGET_PPC64 > +#define TYPE_POWERPC_CPU_SOCKET "powerpc64-cpu-socket" > +#elif defined(TARGET_PPCEMB) > +#define TYPE_POWERPC_CPU_SOCKET "embedded-powerpc-cpu-socket" > +#else > +#define TYPE_POWERPC_CPU_SOCKET "powerpc-cpu-socket" > +#endif > + > +#define POWERPC_CPU_SOCKET(obj) \ > + OBJECT_CHECK(PowerPCCPUSocket, (obj), TYPE_POWERPC_CPU_SOCKET) > + > +typedef struct PowerPCCPUSocket { > + /*< private >*/ > + DeviceState parent_obj; > + /*< public >*/ > + > + PowerPCCPUCore core[0]; > +} PowerPCCPUSocket; > + > +#endif --=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 --MiMBASdxvnz+XAiL Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJVEhgnAAoJEGw4ysog2bOSl1oP/0OURF2HRMI1nddAywdBbwIy axO/xX53qQrf/YaAbOpb1SlEojCHH6GdC7Y0ptFbVLkIKf+7f4KXEHYp48ncb2Cm E6vx2LlrYJlpXBp8SjSZ6xzSnfHJ6HZ7EaxqBX1MwDKI3pgNeCOGUwUCnzpXE0iQ G9rvxgIuYVOxFCLEqgdFP1tLx9//ttWysxfMxNgEOKGW3vHxk/T6lAez1xMJH2KX 0nKIrVsTXNFaEq1zs3/aCybOUX8HpWrOyntP6iFe8DGftyxBDfByi7alPKd230sj Aa9ZPYXeZTiJBbMIHHjMLk/ekPAHm0RLFLK6GQwxKkjsBDPWOwyIVBBv/npCmnA6 HqpoCeqgMDNjpwuJ2ZDBP7W7D86IwjsawKvmLQIsDHwKNqYMYg77V2MTzd91I4fQ JNce5sl0AQgi12BRA7t7UI54yfKhyfoJOVJlWYSQrXI8YytrWVV1PzjD6eqVqNOp e9pOXX6xQlJR5hSoj/B67roL8mqIJdDaSqmGEaZtP9nJtJhJz8P9V5R7RhRXriIc DE/fRBc0/HXjjrze+ySXwPZ1UkEpGuJOa1P/JNG3r0ei3gLXuSnX4KIBqGAyUzOL D0JizlWgMRc9QyyZDm6mHTIRSKZyKGzwN+u4s4PoZCE2Rz9wxyX/FmLuWEEzTPjc NOxxfkRAe51OLHwESZKe =Emi9 -----END PGP SIGNATURE----- --MiMBASdxvnz+XAiL--