Message ID | 20190108163008.7006-2-peter.maydell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tcg: support heterogenous CPU clusters | expand |
On 1/8/19 5:30 PM, Peter Maydell wrote: > Currently the cluster implementation doesn't have any constraints > on the ordering of realizing the TYPE_CPU_CLUSTER and populating it > with child objects. We want to impose a constraint that realize > must happen only after all the child objects are added, so move > the realize of rpu_cluster. (The apu_cluster is already > realized after child population.) > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Luc Michel <luc.michel@greensocs.com> > --- > hw/arm/xlnx-zynqmp.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c > index c67ac2e64ac..370b0e44a38 100644 > --- a/hw/arm/xlnx-zynqmp.c > +++ b/hw/arm/xlnx-zynqmp.c > @@ -183,8 +183,6 @@ static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu, > &error_abort, NULL); > qdev_prop_set_uint32(DEVICE(&s->rpu_cluster), "cluster-id", 1); > > - qdev_init_nofail(DEVICE(&s->rpu_cluster)); > - > for (i = 0; i < num_rpus; i++) { > char *name; > > @@ -212,6 +210,8 @@ static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu, > return; > } > } > + > + qdev_init_nofail(DEVICE(&s->rpu_cluster)); > } > > static void xlnx_zynqmp_init(Object *obj) >
On Tue, Jan 8, 2019 at 8:30 AM Peter Maydell <peter.maydell@linaro.org> wrote: > > Currently the cluster implementation doesn't have any constraints > on the ordering of realizing the TYPE_CPU_CLUSTER and populating it > with child objects. We want to impose a constraint that realize > must happen only after all the child objects are added, so move > the realize of rpu_cluster. (The apu_cluster is already > realized after child population.) > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/arm/xlnx-zynqmp.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c > index c67ac2e64ac..370b0e44a38 100644 > --- a/hw/arm/xlnx-zynqmp.c > +++ b/hw/arm/xlnx-zynqmp.c > @@ -183,8 +183,6 @@ static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu, > &error_abort, NULL); > qdev_prop_set_uint32(DEVICE(&s->rpu_cluster), "cluster-id", 1); > > - qdev_init_nofail(DEVICE(&s->rpu_cluster)); > - > for (i = 0; i < num_rpus; i++) { > char *name; > > @@ -212,6 +210,8 @@ static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu, > return; > } > } > + > + qdev_init_nofail(DEVICE(&s->rpu_cluster)); > } > > static void xlnx_zynqmp_init(Object *obj) > -- > 2.19.2 > >
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index c67ac2e64ac..370b0e44a38 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -183,8 +183,6 @@ static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu, &error_abort, NULL); qdev_prop_set_uint32(DEVICE(&s->rpu_cluster), "cluster-id", 1); - qdev_init_nofail(DEVICE(&s->rpu_cluster)); - for (i = 0; i < num_rpus; i++) { char *name; @@ -212,6 +210,8 @@ static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu, return; } } + + qdev_init_nofail(DEVICE(&s->rpu_cluster)); } static void xlnx_zynqmp_init(Object *obj)
Currently the cluster implementation doesn't have any constraints on the ordering of realizing the TYPE_CPU_CLUSTER and populating it with child objects. We want to impose a constraint that realize must happen only after all the child objects are added, so move the realize of rpu_cluster. (The apu_cluster is already realized after child population.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/xlnx-zynqmp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.19.2