From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 44789C43331 for ; Thu, 26 Mar 2020 22:50:04 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E1F6920714 for ; Thu, 26 Mar 2020 22:50:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M3YGJ5bY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E1F6920714 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:33796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jHbK7-0007QH-35 for qemu-devel@archiver.kernel.org; Thu, 26 Mar 2020 18:50:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55151) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jHbJA-0006tR-2M for qemu-devel@nongnu.org; Thu, 26 Mar 2020 18:49:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jHbJ8-00078t-2Q for qemu-devel@nongnu.org; Thu, 26 Mar 2020 18:49:03 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:54679) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jHbJ7-000774-Qy; Thu, 26 Mar 2020 18:49:02 -0400 Received: by mail-wm1-x344.google.com with SMTP id c81so9318427wmd.4; Thu, 26 Mar 2020 15:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d1d7pdG/nXLLpqwfmCuYhtfvjUUGRAqtNLtV1+7kQ+s=; b=M3YGJ5bY+JzuA1Zw18qApXpuiNBxtk0YOtCdYXLJJMv4ZzFlwDVvR6nNvYfugwCfVk eJlg6+cwMP1obO9zmbX8Mu4wW2s2MXFa27IzUxpA+Ccvjfhzw8Jg0z/GJleOi303RNC5 RH8V4xpAAKib2KkIwj48sJK5BocSKGsF4RnC+shr2+3VWT4wDpxG5DShdGFCngwcXPKW Ak2tBDxBGCIr2SCZNfAPc6SoSGXFHDn8h2bod/TBtS6gpuc6Q/vl616+sEdQgVwFTheh 0+rUk1V8OsDihv1of4qP/DIiLDAuKeWbdM6BPNvMCCqoC5Y0/NOUR7FRk6ZA0cLYLmmx FDDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=d1d7pdG/nXLLpqwfmCuYhtfvjUUGRAqtNLtV1+7kQ+s=; b=P0slEU/2TbNNVBx2e42cwDPHWmxBny+liWB3QimyKU81TF1qZnG9GUyFLJI5rw1FTt 50JB12XxtXJfzVZLLbx7M4Fbwk2EcYU/f25UDy1DI9cwC5CfIlUq5F1wIAYuGjozbREG uYVndNQ8zFquVWCt79kdMBvglbJRAsU3/p5teRoGjM+n5laxJefRW27pPmcmiTS8t+YA GFvex9Ntt8B9DnPZT344uYmLhNiumJrSoJa2Qlc3L8Dhtu+iS1KHL84alrAT4bFA3++h b32E95V/h/e50x8aSYdLjlSkE97xOHVyHQXnLBB71UtrWTwwWH8HTNUMj1A0102YVWMT vlvg== X-Gm-Message-State: ANhLgQ2dYHLGvTum5FLrsNmBZXOgaZajjcG/VBn7PSY9HJOEyMqLOic7 grLC6iYTytVEt06O6LMPYSgACYUH/IhxaXWHvPY= X-Google-Smtp-Source: ADFU+vuj/RGdzwi0v+5F2iuSe0OUNVguGAf4BgcJchGig3QZU98SreJT4dat8e6++uR6esUB/62MjuX4kRw3/k351NA= X-Received: by 2002:a1c:f407:: with SMTP id z7mr2188779wma.36.1585262940330; Thu, 26 Mar 2020 15:49:00 -0700 (PDT) MIME-Version: 1.0 References: <20200325191830.16553-1-f4bug@amsat.org> <20200325191830.16553-8-f4bug@amsat.org> In-Reply-To: <20200325191830.16553-8-f4bug@amsat.org> From: Aleksandar Markovic Date: Fri, 27 Mar 2020 00:48:44 +0200 Message-ID: Subject: Re: [PATCH-for-5.0 07/12] hw/mips/cps: Add missing error-propagation code To: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= Content-Type: multipart/alternative; boundary="0000000000006f22f805a1c9cac4" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paul Burton , Sagar Karandikar , "Michael S. Tsirkin" , Jason Wang , Mark Cave-Ayland , QEMU Developers , Alistair Francis , "Edgar E. Iglesias" , Peter Maydell , Markus Armbruster , Palmer Dabbelt , Aleksandar Rikalo , Richard Henderson , =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= , Eduardo Habkost , Alistair Francis , qemu-arm@nongnu.org, David Gibson , qemu-riscv@nongnu.org, Bastian Koppelmann , Andrew Baumann , Jean-Christophe Dubois , qemu-ppc@nongnu.org, Paolo Bonzini , Aurelien Jarno Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" --0000000000006f22f805a1c9cac4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 21:18 Sre, 25.03.2020. Philippe Mathieu-Daud=C3=A9 =D1=98= =D0=B5 =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BE/=D0=BB=D0=B0: > > 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=C3=A9 > --- > 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 =3D MIPS_CPS(dev); > CPUMIPSState *env; > MIPSCPU *cpu; > int i; > Error *err =3D NULL; > target_ulong gcr_base; > bool itu_present =3D false; > bool saar_present =3D false; > > for (i =3D 0; i < s->num_vp; i++) { > cpu =3D MIPS_CPU(cpu_create(s->cpu_type)); > > /* Init internal devices */ > cpu_mips_irq_init_cpu(cpu); > cpu_mips_clock_init(cpu); > > env =3D &cpu->env; > if (cpu_mips_itu_supported(env)) { > itu_present =3D true; > /* Attach ITC Tag to the VP */ > env->itc_tag =3D mips_itu_get_tag_region(&s->itu); > env->itu =3D &s->itu; > } > qemu_register_reset(main_cpu_reset, cpu); > } > > cpu =3D MIPS_CPU(first_cpu); > env =3D &cpu->env; > saar_present =3D (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 =3D &env->CP0_SAAR; > } > object_property_set_bool(OBJECT(&s->itu), true, "realized", &err); > + if (err) { > + error_propagate(errp, err); > + return; > + } > if (err !=3D 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 !=3D 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 !=3D 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 =3D 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 !=3D 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 --0000000000006f22f805a1c9cac4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

21:18 Sre, 25.03.2020. Philippe Mathieu-Daud=C3=A9 <f4bug@amsat.org> =D1=98=D0=B5 =D0=BD= =D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BE/=D0=BB=D0=B0:
>
> Patch created mechanically by running:
>
> =C2=A0 $ spatch \
> =C2=A0 =C2=A0 --macro-file scripts/cocci-macro-file.h --include-header= s \
> =C2=A0 =C2=A0 --sp-file scripts/coccinelle/object_property_missing_err= or_propagate.cocci \
> =C2=A0 =C2=A0 --keep-comments --smpl-spacing --in-place --dir hw
>
> Signed-off-by: Philippe Mathieu-Daud=C3=A9 <f4bug@amsat.org>
> ---
> =C2=A0hw/mips/cps.c | 52 +++++++++++++++++++++++++++++++++++++++++++++= ++++++
> =C2=A01 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)
> =C2=A0static void mips_cps_realize(DeviceState *dev, Error **errp)
> =C2=A0{
> =C2=A0 =C2=A0 =C2=A0MIPSCPSState *s =3D MIPS_CPS(dev);
> =C2=A0 =C2=A0 =C2=A0CPUMIPSState *env;
> =C2=A0 =C2=A0 =C2=A0MIPSCPU *cpu;
> =C2=A0 =C2=A0 =C2=A0int i;
> =C2=A0 =C2=A0 =C2=A0Error *err =3D NULL;
> =C2=A0 =C2=A0 =C2=A0target_ulong gcr_base;
> =C2=A0 =C2=A0 =C2=A0bool itu_present =3D false;
> =C2=A0 =C2=A0 =C2=A0bool saar_present =3D false;
>
> =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i < s->num_vp; i++) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cpu =3D MIPS_CPU(cpu_create(s->cp= u_type));
>
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Init internal devices */
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cpu_mips_irq_init_cpu(cpu);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cpu_mips_clock_init(cpu);
>
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0env =3D &cpu->env;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (cpu_mips_itu_supported(env)) { > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0itu_present =3D true;<= br> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Attach ITC Tag to t= he VP */
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0env->itc_tag =3D mi= ps_itu_get_tag_region(&s->itu);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0env->itu =3D &s= ->itu;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_register_reset(main_cpu_reset, = cpu);
> =C2=A0 =C2=A0 =C2=A0}
>
> =C2=A0 =C2=A0 =C2=A0cpu =3D MIPS_CPU(first_cpu);
> =C2=A0 =C2=A0 =C2=A0env =3D &cpu->env;
> =C2=A0 =C2=A0 =C2=A0saar_present =3D (bool)env->saarp;
>
> =C2=A0 =C2=A0 =C2=A0/* Inter-Thread Communication Unit */
> =C2=A0 =C2=A0 =C2=A0if (itu_present) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sysbus_init_child_obj(OBJECT(dev), &= quot;itu", &s->itu, sizeof(s->itu),
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TYPE_MIPS_ITU);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&= s->itu), 16, "num-fifo", &err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&= s->itu), 16, "num-semaphores", &err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0object_property_set_bool(OBJECT(&= ;s->itu), saar_present, "saar-present",
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (saar_present) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s->itu.saar =3D &am= p;env->CP0_SAAR;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0object_property_set_bool(OBJECT(&= ;s->itu), true, "realized", &err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (err !=3D NULL) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0error_propagate(errp, = err);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
>
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0memory_region_add_subregion(&s-&= gt;container, 0,
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 sysbus_mmio_get_region(SYS_BUS_DEVICE(&s-&g= t;itu), 0));
> =C2=A0 =C2=A0 =C2=A0}
>
> =C2=A0 =C2=A0 =C2=A0/* Cluster Power Controller */
> =C2=A0 =C2=A0 =C2=A0sysbus_init_child_obj(OBJECT(dev), "cpc"= , &s->cpc, sizeof(s->cpc),
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0TYPE_MIPS_CPC);
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->cpc), s-= >num_vp, "num-vp", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->cpc), 1,= "vp-start-running", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_bool(OBJECT(&s->cpc), t= rue, "realized", &err);
> =C2=A0 =C2=A0 =C2=A0if (err !=3D NULL) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0error_propagate(errp, err);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;
> =C2=A0 =C2=A0 =C2=A0}
>
> =C2=A0 =C2=A0 =C2=A0memory_region_add_subregion(&s->container, = 0,
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sysbus_mmio_get_region(SYS_BUS_DEVICE(&am= p;s->cpc), 0));
>
> =C2=A0 =C2=A0 =C2=A0/* Global Interrupt Controller */
> =C2=A0 =C2=A0 =C2=A0sysbus_init_child_obj(OBJECT(dev), "gic"= , &s->gic, sizeof(s->gic),
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0TYPE_MIPS_GIC);
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->gic), s-= >num_vp, "num-vp", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->gic), 12= 8, "num-irq", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_bool(OBJECT(&s->gic), t= rue, "realized", &err);
> =C2=A0 =C2=A0 =C2=A0if (err !=3D NULL) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0error_propagate(errp, err);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;
> =C2=A0 =C2=A0 =C2=A0}
>
> =C2=A0 =C2=A0 =C2=A0memory_region_add_subregion(&s->container, = 0,
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sysbus_mmio_get_region(SYS_BUS_DEVICE(&am= p;s->gic), 0));
>
> =C2=A0 =C2=A0 =C2=A0/* Global Configuration Registers */
> =C2=A0 =C2=A0 =C2=A0gcr_base =3D env->CP0_CMGCRBase << 4;
>
> =C2=A0 =C2=A0 =C2=A0sysbus_init_child_obj(OBJECT(dev), "gcr"= , &s->gcr, sizeof(s->gcr),
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0TYPE_MIPS_GCR);
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->gcr), s-= >num_vp, "num-vp", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->gcr), 0x= 800, "gcr-rev", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_int(OBJECT(&s->gcr), gc= r_base, "gcr-base", &err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_link(OBJECT(&s->gcr), O= BJECT(&s->gic.mr), "gic", &a= mp;err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_link(OBJECT(&s->gcr), O= BJECT(&s->cpc.mr), "cpc", &a= mp;err);
> +=C2=A0 =C2=A0 if (err) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_propagate(errp, err);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }
> =C2=A0 =C2=A0 =C2=A0object_property_set_bool(OBJECT(&s->gcr), t= rue, "realized", &err);
> =C2=A0 =C2=A0 =C2=A0if (err !=3D NULL) {
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0error_propagate(errp, err);
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;
> =C2=A0 =C2=A0 =C2=A0}
>
> =C2=A0 =C2=A0 =C2=A0memory_region_add_subregion(&s->container, = gcr_base,
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sysbus_mmio_get_region(SYS_BUS_DEVICE(&am= p;s->gcr), 0));
> =C2=A0}
> --
> 2.21.1
>

If you remove the duplicate check that Peter spotted:

Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>

--0000000000006f22f805a1c9cac4--