Message ID | 20181106110548.4209-2-luc.michel@greensocs.com |
---|---|
State | New |
Headers | show |
Series | gdbstub: support for the multiprocess extension | expand |
On 6/11/18 12:05, Luc Michel wrote: > This commit adds the cpu-cluster type. It aims at gathering CPUs from > the same cluster in a machine. > > For now it only has a `cluster-id` property. > > Signed-off-by: Luc Michel <luc.michel@greensocs.com> > Reviewed-by: Alistair Francis <alistair.francis@wdc.com> > --- > include/hw/cpu/cluster.h | 38 ++++++++++++++++++++++++++ > hw/cpu/cluster.c | 59 ++++++++++++++++++++++++++++++++++++++++ > hw/cpu/Makefile.objs | 2 +- > 3 files changed, 98 insertions(+), 1 deletion(-) > create mode 100644 include/hw/cpu/cluster.h > create mode 100644 hw/cpu/cluster.c > > diff --git a/include/hw/cpu/cluster.h b/include/hw/cpu/cluster.h > new file mode 100644 > index 0000000000..0e5f121ec2 > --- /dev/null > +++ b/include/hw/cpu/cluster.h > @@ -0,0 +1,38 @@ > +/* > + * QEMU CPU cluster > + * > + * Copyright (c) 2018 GreenSocs SAS > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, see > + * <http://www.gnu.org/licenses/gpl-2.0.html> > + */ > +#ifndef HW_CPU_CLUSTER_H > +#define HW_CPU_CLUSTER_H > + > +#include "qemu/osdep.h" > +#include "hw/qdev.h" > + > +#define TYPE_CPU_CLUSTER "cpu-cluster" > +#define CPU_CLUSTER(obj) \ > + OBJECT_CHECK(CPUClusterState, (obj), TYPE_CPU_CLUSTER) > + > +typedef struct CPUClusterState { > + /*< private >*/ > + DeviceState parent_obj; > + > + /*< public >*/ > + uint64_t cluster_id; As it or reducing this type: Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > +} CPUClusterState; > + > +#endif > diff --git a/hw/cpu/cluster.c b/hw/cpu/cluster.c > new file mode 100644 > index 0000000000..a23d55054a > --- /dev/null > +++ b/hw/cpu/cluster.c > @@ -0,0 +1,59 @@ > +/* > + * QEMU CPU cluster > + * > + * Copyright (c) 2018 GreenSocs SAS > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, see > + * <http://www.gnu.org/licenses/gpl-2.0.html> > + */ > + > +#include "qemu/osdep.h" > +#include "hw/cpu/cluster.h" > +#include "qapi/error.h" > +#include "qemu/module.h" > + > +static void cpu_cluster_init(Object *obj) > +{ > + static uint64_t cluster_id_auto_increment = 0; > + CPUClusterState *cluster = CPU_CLUSTER(obj); > + > + cluster->cluster_id = cluster_id_auto_increment++; > +} > + > +static Property cpu_cluster_properties[] = { > + DEFINE_PROP_UINT64("cluster-id", CPUClusterState, cluster_id, 0), > + DEFINE_PROP_END_OF_LIST() > +}; > + > +static void cpu_cluster_class_init(ObjectClass *klass, void *data) > +{ > + DeviceClass *dc = DEVICE_CLASS(klass); > + > + dc->props = cpu_cluster_properties; > +} > + > +static const TypeInfo cpu_cluster_type_info = { > + .name = TYPE_CPU_CLUSTER, > + .parent = TYPE_DEVICE, > + .instance_size = sizeof(CPUClusterState), > + .instance_init = cpu_cluster_init, > + .class_init = cpu_cluster_class_init, > +}; > + > +static void cpu_cluster_register_types(void) > +{ > + type_register_static(&cpu_cluster_type_info); > +} > + > +type_init(cpu_cluster_register_types) > diff --git a/hw/cpu/Makefile.objs b/hw/cpu/Makefile.objs > index cd52d20b65..8db9e8a7b3 100644 > --- a/hw/cpu/Makefile.objs > +++ b/hw/cpu/Makefile.objs > @@ -1,5 +1,5 @@ > obj-$(CONFIG_ARM11MPCORE) += arm11mpcore.o > obj-$(CONFIG_REALVIEW) += realview_mpcore.o > obj-$(CONFIG_A9MPCORE) += a9mpcore.o > obj-$(CONFIG_A15MPCORE) += a15mpcore.o > -common-obj-y += core.o > +common-obj-y += core.o cluster.o >
On Thu, Nov 8, 2018 at 5:17 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > On 6/11/18 12:05, Luc Michel wrote: > > This commit adds the cpu-cluster type. It aims at gathering CPUs from > > the same cluster in a machine. > > > > For now it only has a `cluster-id` property. > > > > Signed-off-by: Luc Michel <luc.michel@greensocs.com> > > Reviewed-by: Alistair Francis <alistair.francis@wdc.com> > > --- > > include/hw/cpu/cluster.h | 38 ++++++++++++++++++++++++++ > > hw/cpu/cluster.c | 59 ++++++++++++++++++++++++++++++++++++++++ Eduardo are you OK to cover these files in your "Machine core" MAINTAINER's section? > > hw/cpu/Makefile.objs | 2 +- > > 3 files changed, 98 insertions(+), 1 deletion(-) > > create mode 100644 include/hw/cpu/cluster.h > > create mode 100644 hw/cpu/cluster.c > > > > diff --git a/include/hw/cpu/cluster.h b/include/hw/cpu/cluster.h > > new file mode 100644 > > index 0000000000..0e5f121ec2 > > --- /dev/null > > +++ b/include/hw/cpu/cluster.h > > @@ -0,0 +1,38 @@ > > +/* > > + * QEMU CPU cluster > > + * > > + * Copyright (c) 2018 GreenSocs SAS > > + * > > + * This program is free software; you can redistribute it and/or > > + * modify it under the terms of the GNU General Public License > > + * as published by the Free Software Foundation; either version 2 > > + * of the License, or (at your option) any later version. > > + * > > + * This program is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + * > > + * You should have received a copy of the GNU General Public License > > + * along with this program; if not, see > > + * <http://www.gnu.org/licenses/gpl-2.0.html> > > + */ > > +#ifndef HW_CPU_CLUSTER_H > > +#define HW_CPU_CLUSTER_H > > + > > +#include "qemu/osdep.h" > > +#include "hw/qdev.h" > > + > > +#define TYPE_CPU_CLUSTER "cpu-cluster" > > +#define CPU_CLUSTER(obj) \ > > + OBJECT_CHECK(CPUClusterState, (obj), TYPE_CPU_CLUSTER) > > + > > +typedef struct CPUClusterState { > > + /*< private >*/ > > + DeviceState parent_obj; > > + > > + /*< public >*/ > > + uint64_t cluster_id; > > As it or reducing this type: > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > > > +} CPUClusterState; > > + > > +#endif > > diff --git a/hw/cpu/cluster.c b/hw/cpu/cluster.c > > new file mode 100644 > > index 0000000000..a23d55054a > > --- /dev/null > > +++ b/hw/cpu/cluster.c > > @@ -0,0 +1,59 @@ > > +/* > > + * QEMU CPU cluster > > + * > > + * Copyright (c) 2018 GreenSocs SAS > > + * > > + * This program is free software; you can redistribute it and/or > > + * modify it under the terms of the GNU General Public License > > + * as published by the Free Software Foundation; either version 2 > > + * of the License, or (at your option) any later version. > > + * > > + * This program is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + * > > + * You should have received a copy of the GNU General Public License > > + * along with this program; if not, see > > + * <http://www.gnu.org/licenses/gpl-2.0.html> > > + */ > > + > > +#include "qemu/osdep.h" > > +#include "hw/cpu/cluster.h" > > +#include "qapi/error.h" > > +#include "qemu/module.h" > > + > > +static void cpu_cluster_init(Object *obj) > > +{ > > + static uint64_t cluster_id_auto_increment = 0; > > + CPUClusterState *cluster = CPU_CLUSTER(obj); > > + > > + cluster->cluster_id = cluster_id_auto_increment++; > > +} > > + > > +static Property cpu_cluster_properties[] = { > > + DEFINE_PROP_UINT64("cluster-id", CPUClusterState, cluster_id, 0), > > + DEFINE_PROP_END_OF_LIST() > > +}; > > + > > +static void cpu_cluster_class_init(ObjectClass *klass, void *data) > > +{ > > + DeviceClass *dc = DEVICE_CLASS(klass); > > + > > + dc->props = cpu_cluster_properties; > > +} > > + > > +static const TypeInfo cpu_cluster_type_info = { > > + .name = TYPE_CPU_CLUSTER, > > + .parent = TYPE_DEVICE, > > + .instance_size = sizeof(CPUClusterState), > > + .instance_init = cpu_cluster_init, > > + .class_init = cpu_cluster_class_init, > > +}; > > + > > +static void cpu_cluster_register_types(void) > > +{ > > + type_register_static(&cpu_cluster_type_info); > > +} > > + > > +type_init(cpu_cluster_register_types) > > diff --git a/hw/cpu/Makefile.objs b/hw/cpu/Makefile.objs > > index cd52d20b65..8db9e8a7b3 100644 > > --- a/hw/cpu/Makefile.objs > > +++ b/hw/cpu/Makefile.objs > > @@ -1,5 +1,5 @@ > > obj-$(CONFIG_ARM11MPCORE) += arm11mpcore.o > > obj-$(CONFIG_REALVIEW) += realview_mpcore.o > > obj-$(CONFIG_A9MPCORE) += a9mpcore.o > > obj-$(CONFIG_A15MPCORE) += a15mpcore.o > > -common-obj-y += core.o > > +common-obj-y += core.o cluster.o > >
On Thu, Nov 08, 2018 at 05:23:14PM +0100, Philippe Mathieu-Daudé wrote: > On Thu, Nov 8, 2018 at 5:17 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > On 6/11/18 12:05, Luc Michel wrote: > > > This commit adds the cpu-cluster type. It aims at gathering CPUs from > > > the same cluster in a machine. > > > > > > For now it only has a `cluster-id` property. > > > > > > Signed-off-by: Luc Michel <luc.michel@greensocs.com> > > > Reviewed-by: Alistair Francis <alistair.francis@wdc.com> > > > --- > > > include/hw/cpu/cluster.h | 38 ++++++++++++++++++++++++++ > > > hw/cpu/cluster.c | 59 ++++++++++++++++++++++++++++++++++++++++ > > Eduardo are you OK to cover these files in your "Machine core" > MAINTAINER's section? Yes, no problem.
diff --git a/include/hw/cpu/cluster.h b/include/hw/cpu/cluster.h new file mode 100644 index 0000000000..0e5f121ec2 --- /dev/null +++ b/include/hw/cpu/cluster.h @@ -0,0 +1,38 @@ +/* + * QEMU CPU cluster + * + * Copyright (c) 2018 GreenSocs SAS + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see + * <http://www.gnu.org/licenses/gpl-2.0.html> + */ +#ifndef HW_CPU_CLUSTER_H +#define HW_CPU_CLUSTER_H + +#include "qemu/osdep.h" +#include "hw/qdev.h" + +#define TYPE_CPU_CLUSTER "cpu-cluster" +#define CPU_CLUSTER(obj) \ + OBJECT_CHECK(CPUClusterState, (obj), TYPE_CPU_CLUSTER) + +typedef struct CPUClusterState { + /*< private >*/ + DeviceState parent_obj; + + /*< public >*/ + uint64_t cluster_id; +} CPUClusterState; + +#endif diff --git a/hw/cpu/cluster.c b/hw/cpu/cluster.c new file mode 100644 index 0000000000..a23d55054a --- /dev/null +++ b/hw/cpu/cluster.c @@ -0,0 +1,59 @@ +/* + * QEMU CPU cluster + * + * Copyright (c) 2018 GreenSocs SAS + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see + * <http://www.gnu.org/licenses/gpl-2.0.html> + */ + +#include "qemu/osdep.h" +#include "hw/cpu/cluster.h" +#include "qapi/error.h" +#include "qemu/module.h" + +static void cpu_cluster_init(Object *obj) +{ + static uint64_t cluster_id_auto_increment = 0; + CPUClusterState *cluster = CPU_CLUSTER(obj); + + cluster->cluster_id = cluster_id_auto_increment++; +} + +static Property cpu_cluster_properties[] = { + DEFINE_PROP_UINT64("cluster-id", CPUClusterState, cluster_id, 0), + DEFINE_PROP_END_OF_LIST() +}; + +static void cpu_cluster_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->props = cpu_cluster_properties; +} + +static const TypeInfo cpu_cluster_type_info = { + .name = TYPE_CPU_CLUSTER, + .parent = TYPE_DEVICE, + .instance_size = sizeof(CPUClusterState), + .instance_init = cpu_cluster_init, + .class_init = cpu_cluster_class_init, +}; + +static void cpu_cluster_register_types(void) +{ + type_register_static(&cpu_cluster_type_info); +} + +type_init(cpu_cluster_register_types) diff --git a/hw/cpu/Makefile.objs b/hw/cpu/Makefile.objs index cd52d20b65..8db9e8a7b3 100644 --- a/hw/cpu/Makefile.objs +++ b/hw/cpu/Makefile.objs @@ -1,5 +1,5 @@ obj-$(CONFIG_ARM11MPCORE) += arm11mpcore.o obj-$(CONFIG_REALVIEW) += realview_mpcore.o obj-$(CONFIG_A9MPCORE) += a9mpcore.o obj-$(CONFIG_A15MPCORE) += a15mpcore.o -common-obj-y += core.o +common-obj-y += core.o cluster.o