On Sun, Apr 12, 2020 at 3:44 PM Philippe Mathieu-Daudé <f4bug@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é <f4bug@amsat.org>
Reviewed-by: Alistair Francis <alistair.francis@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
>
>