On Sun, Apr 12, 2020 at 3:44 PM Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > > Coccinelle reported: > > $ spatch ... --timeout 60 --sp-file \ > scripts/coccinelle/simplify-init-realize-error_propagate.cocci > HANDLING: ./hw/microblaze/xlnx-zynqmp-pmu.c > >>> possible moves from xlnx_zynqmp_pmu_soc_init() to > xlnx_zynqmp_pmu_soc_realize() in ./hw/microblaze/xlnx-zynqmp-pmu.c:79 > > Move the calls using &error_abort which don't depend on input > updated before realize() to init(). > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > v3: Typo 'depend of' -> 'depend on' (eblake) > --- > hw/microblaze/xlnx-zynqmp-pmu.c | 46 ++++++++++++++++----------------- > 1 file changed, 23 insertions(+), 23 deletions(-) > > diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pmu.c > index 028f31894d..2aa602cf85 100644 > --- a/hw/microblaze/xlnx-zynqmp-pmu.c > +++ b/hw/microblaze/xlnx-zynqmp-pmu.c > @@ -63,24 +63,6 @@ static void xlnx_zynqmp_pmu_soc_init(Object *obj) > > object_initialize_child(obj, "pmu-cpu", &s->cpu, sizeof(s->cpu), > TYPE_MICROBLAZE_CPU, &error_abort, NULL); > - > - sysbus_init_child_obj(obj, "intc", &s->intc, sizeof(s->intc), > - TYPE_XLNX_PMU_IO_INTC); > - > - /* Create the IPI device */ > - for (int i = 0; i < XLNX_ZYNQMP_PMU_NUM_IPIS; i++) { > - char *name = g_strdup_printf("ipi%d", i); > - sysbus_init_child_obj(obj, name, &s->ipi[i], > - sizeof(XlnxZynqMPIPI), TYPE_XLNX_ZYNQMP_IPI); > - g_free(name); > - } > -} > - > -static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp) > -{ > - XlnxZynqMPPMUSoCState *s = XLNX_ZYNQMP_PMU_SOC(dev); > - Error *err = NULL; > - > object_property_set_uint(OBJECT(&s->cpu), XLNX_ZYNQMP_PMU_ROM_ADDR, > "base-vectors", &error_abort); > object_property_set_bool(OBJECT(&s->cpu), true, "use-stack-protection", > @@ -99,18 +81,36 @@ static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, > Error **errp) > object_property_set_str(OBJECT(&s->cpu), "8.40.b", "version", > &error_abort); > object_property_set_uint(OBJECT(&s->cpu), 0, "pvr", &error_abort); > - object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); > - if (err) { > - error_propagate(errp, err); > - return; > - } > > + sysbus_init_child_obj(obj, "intc", &s->intc, sizeof(s->intc), > + TYPE_XLNX_PMU_IO_INTC); > object_property_set_uint(OBJECT(&s->intc), 0x10, "intc-intr-size", > &error_abort); > object_property_set_uint(OBJECT(&s->intc), 0x0, "intc-level-edge", > &error_abort); > object_property_set_uint(OBJECT(&s->intc), 0xffff, "intc-positive", > &error_abort); > + > + /* Create the IPI device */ > + for (int i = 0; i < XLNX_ZYNQMP_PMU_NUM_IPIS; i++) { > + char *name = g_strdup_printf("ipi%d", i); > + sysbus_init_child_obj(obj, name, &s->ipi[i], > + sizeof(XlnxZynqMPIPI), TYPE_XLNX_ZYNQMP_IPI); > + g_free(name); > + } > +} > + > +static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp) > +{ > + XlnxZynqMPPMUSoCState *s = XLNX_ZYNQMP_PMU_SOC(dev); > + Error *err = NULL; > + > + object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > + > object_property_set_bool(OBJECT(&s->intc), true, "realized", &err); > if (err) { > error_propagate(errp, err); > -- > 2.21.1 > >