On Sun, Apr 12, 2020 at 3:45 PM Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > > Coccinelle failed at processing this file: > > $ spatch ... --timeout 60 --sp-file \ > scripts/coccinelle/simplify-init-realize-error_propagate.cocci > HANDLING: ./hw/arm/xlnx-zynqmp.c > EXN: Coccinelle_modules.Common.Timeout > > We are going to manually add the missing propagate_error() calls. > As there are many Error* calls used, simplify by using an unique > call to propagate_error().
I'm not a huge fan of goto's so I'm not sure this is simpler. Alistair > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > hw/arm/xlnx-zynqmp.c | 61 +++++++++++++++++--------------------------- > 1 file changed, 23 insertions(+), 38 deletions(-) > > diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c > index b84d153d56..43d57fa7de 100644 > --- a/hw/arm/xlnx-zynqmp.c > +++ b/hw/arm/xlnx-zynqmp.c > @@ -385,15 +385,13 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > object_property_set_bool(OBJECT(&s->apu_cpu[i]), true, "realized", > &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > } > > object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > > assert(ARRAY_SIZE(xlnx_zynqmp_gic_regions) == XLNX_ZYNQMP_GIC_REGIONS); > @@ -462,8 +460,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > > xlnx_zynqmp_create_rpu(ms, s, boot_cpu, &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > > if (!s->boot_cpu_ptr) { > @@ -488,8 +485,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > &error_abort); > object_property_set_bool(OBJECT(&s->gem[i]), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->gem[i]), 0, gem_addr[i]); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->gem[i]), 0, > @@ -500,8 +496,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); > object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", > &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, uart_addr[i]); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0, > @@ -512,8 +507,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > &error_abort); > object_property_set_bool(OBJECT(&s->sata), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > > sysbus_mmio_map(SYS_BUS_DEVICE(&s->sata), 0, SATA_ADDR); > @@ -531,23 +525,19 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > */ > object_property_set_uint(sdhci, 3, "sd-spec-version", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > object_property_set_uint(sdhci, SDHCI_CAPABILITIES, "capareg", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > object_property_set_uint(sdhci, UHS_I, "uhs", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > object_property_set_bool(sdhci, true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(sbd, 0, sdhci_addr[i]); > sysbus_connect_irq(sbd, 0, gic_spi[sdhci_intr[i]]); > @@ -564,8 +554,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > > object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > > sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0, spi_addr[i]); > @@ -582,8 +571,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > > object_property_set_bool(OBJECT(&s->qspi), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->qspi), 0, QSPI_ADDR); > sysbus_mmio_map(SYS_BUS_DEVICE(&s->qspi), 1, LQSPI_ADDR); > @@ -605,16 +593,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > > object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); > > object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > object_property_set_link(OBJECT(&s->dp), OBJECT(&s->dpdma), "dpdma", > &error_abort); > @@ -623,16 +609,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > > object_property_set_bool(OBJECT(&s->ipi), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->ipi), 0, IPI_ADDR); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->ipi), 0, gic_spi[IPI_IRQ]); > > object_property_set_bool(OBJECT(&s->rtc), true, "realized", &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > sysbus_mmio_map(SYS_BUS_DEVICE(&s->rtc), 0, RTC_ADDR); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->rtc), 0, gic_spi[RTC_IRQ]); > @@ -640,13 +624,11 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > for (i = 0; i < XLNX_ZYNQMP_NUM_GDMA_CH; i++) { > object_property_set_uint(OBJECT(&s->gdma[i]), 128, "bus-width", > &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > object_property_set_bool(OBJECT(&s->gdma[i]), true, "realized", > &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > > sysbus_mmio_map(SYS_BUS_DEVICE(&s->gdma[i]), 0, gdma_ch_addr[i]); > @@ -657,14 +639,17 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > for (i = 0; i < XLNX_ZYNQMP_NUM_ADMA_CH; i++) { > object_property_set_bool(OBJECT(&s->adma[i]), true, "realized", > &err); > if (err) { > - error_propagate(errp, err); > - return; > + goto out_propagate_error; > } > > sysbus_mmio_map(SYS_BUS_DEVICE(&s->adma[i]), 0, adma_ch_addr[i]); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->adma[i]), 0, > gic_spi[adma_ch_intr[i]]); > } > + return; > + > +out_propagate_error: > + error_propagate(errp, err); > } > > static Property xlnx_zynqmp_props[] = { > -- > 2.21.1 > >