21:18 Sre, 25.03.2020. Philippe Mathieu-Daudé је написао/ла: > > Patch created mechanically by running: > > $ spatch \ > --macro-file scripts/cocci-macro-file.h --include-headers \ > --sp-file scripts/coccinelle/object_property_missing_error_propagate.cocci \ > --keep-comments --smpl-spacing --in-place --dir hw > > Signed-off-by: Philippe Mathieu-Daudé > --- > hw/mips/cps.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/hw/mips/cps.c b/hw/mips/cps.c > index 92b9b1a5f6..d682633401 100644 > --- a/hw/mips/cps.c > +++ b/hw/mips/cps.c > @@ -68,100 +68,152 @@ static bool cpu_mips_itu_supported(CPUMIPSState *env) > static void mips_cps_realize(DeviceState *dev, Error **errp) > { > MIPSCPSState *s = MIPS_CPS(dev); > CPUMIPSState *env; > MIPSCPU *cpu; > int i; > Error *err = NULL; > target_ulong gcr_base; > bool itu_present = false; > bool saar_present = false; > > for (i = 0; i < s->num_vp; i++) { > cpu = MIPS_CPU(cpu_create(s->cpu_type)); > > /* Init internal devices */ > cpu_mips_irq_init_cpu(cpu); > cpu_mips_clock_init(cpu); > > env = &cpu->env; > if (cpu_mips_itu_supported(env)) { > itu_present = true; > /* Attach ITC Tag to the VP */ > env->itc_tag = mips_itu_get_tag_region(&s->itu); > env->itu = &s->itu; > } > qemu_register_reset(main_cpu_reset, cpu); > } > > cpu = MIPS_CPU(first_cpu); > env = &cpu->env; > saar_present = (bool)env->saarp; > > /* Inter-Thread Communication Unit */ > if (itu_present) { > sysbus_init_child_obj(OBJECT(dev), "itu", &s->itu, sizeof(s->itu), > TYPE_MIPS_ITU); > object_property_set_int(OBJECT(&s->itu), 16, "num-fifo", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_int(OBJECT(&s->itu), 16, "num-semaphores", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_bool(OBJECT(&s->itu), saar_present, "saar-present", > &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > if (saar_present) { > s->itu.saar = &env->CP0_SAAR; > } > object_property_set_bool(OBJECT(&s->itu), true, "realized", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > if (err != NULL) { > error_propagate(errp, err); > return; > } > > memory_region_add_subregion(&s->container, 0, > sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->itu), 0)); > } > > /* Cluster Power Controller */ > sysbus_init_child_obj(OBJECT(dev), "cpc", &s->cpc, sizeof(s->cpc), > TYPE_MIPS_CPC); > object_property_set_int(OBJECT(&s->cpc), s->num_vp, "num-vp", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_int(OBJECT(&s->cpc), 1, "vp-start-running", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_bool(OBJECT(&s->cpc), true, "realized", &err); > if (err != NULL) { > error_propagate(errp, err); > return; > } > > memory_region_add_subregion(&s->container, 0, > sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->cpc), 0)); > > /* Global Interrupt Controller */ > sysbus_init_child_obj(OBJECT(dev), "gic", &s->gic, sizeof(s->gic), > TYPE_MIPS_GIC); > object_property_set_int(OBJECT(&s->gic), s->num_vp, "num-vp", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_int(OBJECT(&s->gic), 128, "num-irq", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); > if (err != NULL) { > error_propagate(errp, err); > return; > } > > memory_region_add_subregion(&s->container, 0, > sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gic), 0)); > > /* Global Configuration Registers */ > gcr_base = env->CP0_CMGCRBase << 4; > > sysbus_init_child_obj(OBJECT(dev), "gcr", &s->gcr, sizeof(s->gcr), > TYPE_MIPS_GCR); > object_property_set_int(OBJECT(&s->gcr), s->num_vp, "num-vp", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_int(OBJECT(&s->gcr), 0x800, "gcr-rev", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_int(OBJECT(&s->gcr), gcr_base, "gcr-base", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->gic.mr), "gic", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->cpc.mr), "cpc", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > object_property_set_bool(OBJECT(&s->gcr), true, "realized", &err); > if (err != NULL) { > error_propagate(errp, err); > return; > } > > memory_region_add_subregion(&s->container, gcr_base, > sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gcr), 0)); > } > -- > 2.21.1 > If you remove the duplicate check that Peter spotted: Reviewed-by: Aleksandar Markovic