From nobody Sun Feb 8 19:59:49 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1570816273; cv=none; d=zoho.com; s=zohoarc; b=EXKiD8VMZliVr9sZ/jV3fAN9bkGPkh40KBTPZI++01qdX6iPD2iGWz75PtBu2okRwZG7vB/MVoj4YvthC2xNlOGXwhYDY01UtMt/ZLda/exNNPuaya4R4REEl6tMe/C6z/9tmlXnkgcpvG71kTGq0wOunylMm/oGhn5ptylSk0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570816273; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IabvAUOqw3BdiPHFs2uPlTlYFfFtj4cShm+gUPjJrb4=; b=Xw8E3ICoChfgF3YrtTj0O502eBuSs9nKiqyKM5eyWCJ9OOCAaFomu8uogj6iUq34jd+XOyrxAJhzAaa8xVjO7uZ9U5GDywnXwrvwDcfuhPItgc0wNNXavL5oRC7ZRFPL5qkr3EPvDRmZwJh+RKTRXf+E9XMliPGzy7utTxP3Arc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570816273345685.4950758035164; Fri, 11 Oct 2019 10:51:13 -0700 (PDT) Received: from localhost ([::1]:54932 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIz4J-00006X-TY for importer@patchew.org; Fri, 11 Oct 2019 13:51:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37469) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIxRT-0007Ey-Hu for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:07:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIxRM-0004zM-Da for qemu-devel@nongnu.org; Fri, 11 Oct 2019 12:06:59 -0400 Received: from relay.sw.ru ([185.231.240.75]:47994) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iIxRL-0004BR-NW; Fri, 11 Oct 2019 12:06:52 -0400 Received: from [10.94.3.0] (helo=kvm.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.2) (envelope-from ) id 1iIxQc-0003XG-VH; Fri, 11 Oct 2019 19:06:07 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Subject: [RFC v5 029/126] tcg: introduce ERRP_AUTO_PROPAGATE Date: Fri, 11 Oct 2019 19:04:15 +0300 Message-Id: <20191011160552.22907-30-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191011160552.22907-1-vsementsov@virtuozzo.com> References: <20191011160552.22907-1-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 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: Peter Maydell , Sagar Karandikar , "Michael S. Tsirkin" , Anthony Green , Palmer Dabbelt , Mark Cave-Ayland , Max Filippov , Alistair Francis , "Edgar E. Iglesias" , Guan Xuetao , Marek Vasut , Aleksandar Rikalo , armbru@redhat.com, David Gibson , Artyom Tarasenko , Eduardo Habkost , Greg Kurz , Eric Auger , qemu-arm@nongnu.org, Stafford Horne , Richard Henderson , Kevin Wolf , vsementsov@virtuozzo.com, qemu-riscv@nongnu.org, Bastian Koppelmann , Chris Wulff , Laurent Vivier , Michael Walle , qemu-ppc@nongnu.org, Aleksandar Markovic , Paolo Bonzini , Aurelien Jarno Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp =3D=3D &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases. If we want to check error after errp-function call, we need to introduce local_err and than propagate it to errp. Instead, use ERRP_AUTO_PROPAGATE macro, benefits are: 1. No need of explicit error_propagate call 2. No need of explicit local_err variable: use errp directly 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or &error_fatel, this means that we don't break error_abort (we'll abort on error_set, not on error_propagate) This commit (together with its neighbors) was generated by for f in $(git grep -l errp \*.[ch]); do \ spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ done; then fix a bit of compilation problems: coccinelle for some reason leaves several f() { ... goto out; ... out: } patterns, with "out:" at function end. then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Kevin Wolf Reported-by: Greg Kurz Signed-off-by: Vladimir Sementsov-Ogievskiy --- exec.c | 21 +++--- hw/arm/armv7m.c | 52 ++++++-------- hw/arm/smmu-common.c | 7 +- hw/arm/smmuv3.c | 7 +- hw/cpu/a15mpcore.c | 7 +- hw/cpu/a9mpcore.c | 27 +++---- hw/cpu/arm11mpcore.c | 22 +++--- hw/i386/pc.c | 120 +++++++++++++------------------- hw/intc/nios2_iic.c | 6 +- hw/mips/cps.c | 46 ++++++------ hw/riscv/riscv_hart.c | 7 +- hw/riscv/sifive_e.c | 7 +- hw/riscv/sifive_u.c | 11 ++- hw/sd/milkymist-memcard.c | 11 +-- target/alpha/cpu.c | 7 +- target/arm/cpu.c | 7 +- target/arm/cpu64.c | 11 ++- target/cris/cpu.c | 7 +- target/hppa/cpu.c | 7 +- target/i386/cpu.c | 117 ++++++++++++++----------------- target/lm32/cpu.c | 7 +- target/m68k/cpu.c | 7 +- target/microblaze/cpu.c | 7 +- target/mips/cpu.c | 7 +- target/moxie/cpu.c | 7 +- target/nios2/cpu.c | 7 +- target/openrisc/cpu.c | 7 +- target/ppc/compat.c | 20 +++--- target/ppc/translate_init.inc.c | 26 +++---- target/riscv/cpu.c | 7 +- target/sh4/cpu.c | 7 +- target/sparc/cpu.c | 14 ++-- target/tricore/cpu.c | 7 +- target/unicore32/cpu.c | 7 +- target/xtensa/cpu.c | 7 +- 35 files changed, 280 insertions(+), 371 deletions(-) diff --git a/exec.c b/exec.c index bdcfcdff3f..2dc17769f7 100644 --- a/exec.c +++ b/exec.c @@ -2239,10 +2239,10 @@ static void dirty_memory_extend(ram_addr_t old_ram_= size, =20 static void ram_block_add(RAMBlock *new_block, Error **errp, bool shared) { + ERRP_AUTO_PROPAGATE(); RAMBlock *block; RAMBlock *last_block =3D NULL; ram_addr_t old_ram_size, new_ram_size; - Error *err =3D NULL; =20 old_ram_size =3D last_ram_page(); =20 @@ -2252,9 +2252,8 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp, bool shared) if (!new_block->host) { if (xen_enabled()) { xen_ram_alloc(new_block->offset, new_block->max_length, - new_block->mr, &err); - if (err) { - error_propagate(errp, err); + new_block->mr, errp); + if (*errp) { qemu_mutex_unlock_ramlist(); return; } @@ -2319,8 +2318,8 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, Mem= oryRegion *mr, uint32_t ram_flags, int fd, Error **errp) { + ERRP_AUTO_PROPAGATE(); RAMBlock *new_block; - Error *local_err =3D NULL; int64_t file_size; =20 /* Just support these ram flags by now. */ @@ -2368,10 +2367,9 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, Me= moryRegion *mr, return NULL; } =20 - ram_block_add(new_block, &local_err, ram_flags & RAM_SHARED); - if (local_err) { + ram_block_add(new_block, errp, ram_flags & RAM_SHARED); + if (*errp) { g_free(new_block); - error_propagate(errp, local_err); return NULL; } return new_block; @@ -2413,8 +2411,8 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, ra= m_addr_t max_size, void *host, bool resizeable, bool share, MemoryRegion *mr, Error **errp) { + ERRP_AUTO_PROPAGATE(); RAMBlock *new_block; - Error *local_err =3D NULL; =20 size =3D HOST_PAGE_ALIGN(size); max_size =3D HOST_PAGE_ALIGN(max_size); @@ -2433,10 +2431,9 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, r= am_addr_t max_size, if (resizeable) { new_block->flags |=3D RAM_RESIZEABLE; } - ram_block_add(new_block, &local_err, share); - if (local_err) { + ram_block_add(new_block, errp, share); + if (*errp) { g_free(new_block); - error_propagate(errp, local_err); return NULL; } return new_block; diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index 7a3c48f002..1a738789de 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -148,9 +148,9 @@ static void armv7m_instance_init(Object *obj) =20 static void armv7m_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); ARMv7MState *s =3D ARMV7M(dev); SysBusDevice *sbd; - Error *err =3D NULL; int i; =20 if (!s->board_memory) { @@ -161,50 +161,44 @@ static void armv7m_realize(DeviceState *dev, Error **= errp) memory_region_add_subregion_overlap(&s->container, 0, s->board_memory,= -1); =20 s->cpu =3D ARM_CPU(object_new_with_props(s->cpu_type, OBJECT(s), "cpu", - &err, NULL)); - if (err !=3D NULL) { - error_propagate(errp, err); + errp, NULL)); + if (*errp) { return; } =20 object_property_set_link(OBJECT(s->cpu), OBJECT(&s->container), "memor= y", &error_abort); if (object_property_find(OBJECT(s->cpu), "idau", NULL)) { - object_property_set_link(OBJECT(s->cpu), s->idau, "idau", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_link(OBJECT(s->cpu), s->idau, "idau", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "init-svtor", NULL)) { object_property_set_uint(OBJECT(s->cpu), s->init_svtor, - "init-svtor", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "init-svtor", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "start-powered-off", NULL)) { object_property_set_bool(OBJECT(s->cpu), s->start_powered_off, - "start-powered-off", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "start-powered-off", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "vfp", NULL)) { object_property_set_bool(OBJECT(s->cpu), s->vfp, - "vfp", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "vfp", errp); + if (*errp) { return; } } if (object_property_find(OBJECT(s->cpu), "dsp", NULL)) { object_property_set_bool(OBJECT(s->cpu), s->dsp, - "dsp", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + "dsp", errp); + if (*errp) { return; } } @@ -216,16 +210,14 @@ static void armv7m_realize(DeviceState *dev, Error **= errp) s->cpu->env.nvic =3D &s->nvic; s->nvic.cpu =3D s->cpu; =20 - object_property_set_bool(OBJECT(s->cpu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(s->cpu), true, "realized", errp); + if (*errp) { return; } =20 /* Note that we must realize the NVIC after the CPU */ - object_property_set_bool(OBJECT(&s->nvic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->nvic), true, "realized", errp); + if (*errp) { return; } =20 @@ -250,16 +242,14 @@ static void armv7m_realize(DeviceState *dev, Error **= errp) Object *obj =3D OBJECT(&s->bitband[i]); SysBusDevice *sbd =3D SYS_BUS_DEVICE(&s->bitband[i]); =20 - object_property_set_int(obj, bitband_input_addr[i], "base", &e= rr); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(obj, bitband_input_addr[i], "base", er= rp); + if (*errp) { return; } object_property_set_link(obj, OBJECT(s->board_memory), "source-memory", &error_abort); - object_property_set_bool(obj, true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(obj, true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 245817d23e..b89d72db08 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -421,13 +421,12 @@ void smmu_inv_notifiers_all(SMMUState *s) =20 static void smmu_base_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SMMUState *s =3D ARM_SMMU(dev); SMMUBaseClass *sbc =3D ARM_SMMU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - sbc->parent_realize(dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + sbc->parent_realize(dev, errp); + if (*errp) { return; } s->configs =3D g_hash_table_new_full(NULL, NULL, NULL, g_free); diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index e2fbb8357e..d6ffd3a665 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1385,15 +1385,14 @@ static void smmu_reset(DeviceState *dev) =20 static void smmu_realize(DeviceState *d, Error **errp) { + ERRP_AUTO_PROPAGATE(); SMMUState *sys =3D ARM_SMMU(d); SMMUv3State *s =3D ARM_SMMUV3(sys); SMMUv3Class *c =3D ARM_SMMUV3_GET_CLASS(s); SysBusDevice *dev =3D SYS_BUS_DEVICE(d); - Error *local_err =3D NULL; =20 - c->parent_realize(d, &local_err); - if (local_err) { - error_propagate(errp, local_err); + c->parent_realize(d, errp); + if (*errp) { return; } =20 diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c index 7e9983aa19..d010be7476 100644 --- a/hw/cpu/a15mpcore.c +++ b/hw/cpu/a15mpcore.c @@ -49,12 +49,12 @@ static void a15mp_priv_initfn(Object *obj) =20 static void a15mp_priv_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); A15MPPrivState *s =3D A15MPCORE_PRIV(dev); DeviceState *gicdev; SysBusDevice *busdev; int i; - Error *err =3D NULL; bool has_el3; bool has_el2 =3D false; Object *cpuobj; @@ -77,9 +77,8 @@ static void a15mp_priv_realize(DeviceState *dev, Error **= errp) qdev_prop_set_bit(gicdev, "has-virtualization-extensions", has_el2= ); } =20 - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } busdev =3D SYS_BUS_DEVICE(&s->gic); diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c index 6872a3a00a..9a66401cdd 100644 --- a/hw/cpu/a9mpcore.c +++ b/hw/cpu/a9mpcore.c @@ -46,21 +46,20 @@ static void a9mp_priv_initfn(Object *obj) =20 static void a9mp_priv_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); A9MPPrivState *s =3D A9MPCORE_PRIV(dev); DeviceState *scudev, *gicdev, *gtimerdev, *mptimerdev, *wdtdev; SysBusDevice *scubusdev, *gicbusdev, *gtimerbusdev, *mptimerbusdev, *wdtbusdev; - Error *err =3D NULL; int i; bool has_el3; Object *cpuobj; =20 scudev =3D DEVICE(&s->scu); qdev_prop_set_uint32(scudev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->scu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->scu), true, "realized", errp); + if (*errp) { return; } scubusdev =3D SYS_BUS_DEVICE(&s->scu); @@ -77,9 +76,8 @@ static void a9mp_priv_realize(DeviceState *dev, Error **e= rrp) object_property_get_bool(cpuobj, "has_el3", &error_abort); qdev_prop_set_bit(gicdev, "has-security-extensions", has_el3); =20 - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } gicbusdev =3D SYS_BUS_DEVICE(&s->gic); @@ -92,27 +90,24 @@ static void a9mp_priv_realize(DeviceState *dev, Error *= *errp) =20 gtimerdev =3D DEVICE(&s->gtimer); qdev_prop_set_uint32(gtimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->gtimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gtimer), true, "realized", errp); + if (*errp) { return; } gtimerbusdev =3D SYS_BUS_DEVICE(&s->gtimer); =20 mptimerdev =3D DEVICE(&s->mptimer); qdev_prop_set_uint32(mptimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->mptimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->mptimer), true, "realized", errp); + if (*errp) { return; } mptimerbusdev =3D SYS_BUS_DEVICE(&s->mptimer); =20 wdtdev =3D DEVICE(&s->wdt); qdev_prop_set_uint32(wdtdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->wdt), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->wdt), true, "realized", errp); + if (*errp) { return; } wdtbusdev =3D SYS_BUS_DEVICE(&s->wdt); diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c index e78f5d080c..21c2fa6289 100644 --- a/hw/cpu/arm11mpcore.c +++ b/hw/cpu/arm11mpcore.c @@ -69,26 +69,24 @@ static void mpcore_priv_map_setup(ARM11MPCorePriveState= *s) =20 static void mpcore_priv_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); ARM11MPCorePriveState *s =3D ARM11MPCORE_PRIV(dev); DeviceState *scudev =3D DEVICE(&s->scu); DeviceState *gicdev =3D DEVICE(&s->gic); DeviceState *mptimerdev =3D DEVICE(&s->mptimer); DeviceState *wdtimerdev =3D DEVICE(&s->wdtimer); - Error *err =3D NULL; =20 qdev_prop_set_uint32(scudev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->scu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->scu), true, "realized", errp); + if (*errp) { return; } =20 qdev_prop_set_uint32(gicdev, "num-cpu", s->num_cpu); qdev_prop_set_uint32(gicdev, "num-irq", s->num_irq); - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } =20 @@ -99,16 +97,14 @@ static void mpcore_priv_realize(DeviceState *dev, Error= **errp) qdev_init_gpio_in(dev, mpcore_priv_set_irq, s->num_irq - 32); =20 qdev_prop_set_uint32(mptimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->mptimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->mptimer), true, "realized", errp); + if (*errp) { return; } =20 qdev_prop_set_uint32(wdtimerdev, "num-cpu", s->num_cpu); - object_property_set_bool(OBJECT(&s->wdtimer), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->wdtimer), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index bcda50efcc..bd94cff454 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1376,8 +1376,8 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int= level) =20 static void pc_new_cpu(PCMachineState *pcms, int64_t apic_id, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *cpu =3D NULL; - Error *local_err =3D NULL; CPUX86State *env =3D NULL; =20 cpu =3D object_new(MACHINE(pcms)->cpu_type); @@ -1385,11 +1385,10 @@ static void pc_new_cpu(PCMachineState *pcms, int64_= t apic_id, Error **errp) env =3D &X86_CPU(cpu)->env; env->nr_dies =3D pcms->smp_dies; =20 - object_property_set_uint(cpu, apic_id, "apic-id", &local_err); - object_property_set_bool(cpu, true, "realized", &local_err); + object_property_set_uint(cpu, apic_id, "apic-id", errp); + object_property_set_bool(cpu, true, "realized", errp); =20 object_unref(cpu); - error_propagate(errp, local_err); } =20 /* @@ -1474,9 +1473,9 @@ void pc_smp_parse(MachineState *ms, QemuOpts *opts) =20 void pc_hot_add_cpu(MachineState *ms, const int64_t id, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(ms); int64_t apic_id =3D x86_cpu_apic_id_from_index(pcms, id); - Error *local_err =3D NULL; =20 if (id < 0) { error_setg(errp, "Invalid CPU id: %" PRIi64, id); @@ -1490,9 +1489,8 @@ void pc_hot_add_cpu(MachineState *ms, const int64_t i= d, Error **errp) return; } =20 - pc_new_cpu(PC_MACHINE(ms), apic_id, &local_err); - if (local_err) { - error_propagate(errp, local_err); + pc_new_cpu(PC_MACHINE(ms), apic_id, errp); + if (*errp) { return; } } @@ -1990,12 +1988,12 @@ void ioapic_init_gsi(GSIState *gsi_state, const cha= r *parent_name) static void pc_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *d= ev, Error **errp) { + ERRP_AUTO_PROPAGATE(); const PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); const PCMachineClass *pcmc =3D PC_MACHINE_GET_CLASS(pcms); const MachineState *ms =3D MACHINE(hotplug_dev); const bool is_nvdimm =3D object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); const uint64_t legacy_align =3D TARGET_PAGE_SIZE; - Error *local_err =3D NULL; =20 /* * When -no-acpi is used with Q35 machine type, no ACPI is built, @@ -2013,9 +2011,8 @@ static void pc_memory_pre_plug(HotplugHandler *hotplu= g_dev, DeviceState *dev, return; } =20 - hotplug_handler_pre_plug(pcms->acpi_dev, dev, &local_err); - if (local_err) { - error_propagate(errp, local_err); + hotplug_handler_pre_plug(pcms->acpi_dev, dev, errp); + if (*errp) { return; } =20 @@ -2026,14 +2023,14 @@ static void pc_memory_pre_plug(HotplugHandler *hotp= lug_dev, DeviceState *dev, static void pc_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); MachineState *ms =3D MACHINE(hotplug_dev); bool is_nvdimm =3D object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); =20 - pc_dimm_plug(PC_DIMM(dev), MACHINE(pcms), &local_err); - if (local_err) { - goto out; + pc_dimm_plug(PC_DIMM(dev), MACHINE(pcms), errp); + if (*errp) { + return; } =20 if (is_nvdimm) { @@ -2041,14 +2038,12 @@ static void pc_memory_plug(HotplugHandler *hotplug_= dev, } =20 hotplug_handler_plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &error_abor= t); -out: - error_propagate(errp, local_err); } =20 static void pc_memory_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 /* @@ -2057,38 +2052,34 @@ static void pc_memory_unplug_request(HotplugHandler= *hotplug_dev, * addition to cover this case. */ if (!pcms->acpi_dev || !acpi_enabled) { - error_setg(&local_err, + error_setg(errp, "memory hotplug is not enabled: missing acpi device or = acpi disabled"); - goto out; + return; } =20 if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { - error_setg(&local_err, + error_setg(errp, "nvdimm device hot unplug is not supported yet."); - goto out; + return; } =20 hotplug_handler_unplug_request(HOTPLUG_HANDLER(pcms->acpi_dev), dev, - &local_err); -out: - error_propagate(errp, local_err); + errp); } =20 static void pc_memory_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); - Error *local_err =3D NULL; =20 - hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_er= r); - if (local_err) { - goto out; + hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, errp); + if (*errp) { + return; } =20 pc_dimm_unplug(PC_DIMM(dev), MACHINE(pcms)); object_property_set_bool(OBJECT(dev), false, "realized", NULL); - out: - error_propagate(errp, local_err); } =20 static int pc_apic_cmp(const void *a, const void *b) @@ -2120,15 +2111,15 @@ static CPUArchId *pc_find_cpu_slot(MachineState *ms= , uint32_t id, int *idx) static void pc_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUArchId *found_cpu; - Error *local_err =3D NULL; X86CPU *cpu =3D X86_CPU(dev); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 if (pcms->acpi_dev) { - hotplug_handler_plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_= err); - if (local_err) { - goto out; + hotplug_handler_plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, errp); + if (*errp) { + return; } } =20 @@ -2143,51 +2134,46 @@ static void pc_cpu_plug(HotplugHandler *hotplug_dev, =20 found_cpu =3D pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, NULL); found_cpu->cpu =3D OBJECT(dev); -out: - error_propagate(errp, local_err); } static void pc_cpu_unplug_request_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); int idx =3D -1; - Error *local_err =3D NULL; X86CPU *cpu =3D X86_CPU(dev); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 if (!pcms->acpi_dev) { - error_setg(&local_err, "CPU hot unplug not supported without ACPI"= ); - goto out; + error_setg(errp, "CPU hot unplug not supported without ACPI"); + return; } =20 pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, &idx); assert(idx !=3D -1); if (idx =3D=3D 0) { - error_setg(&local_err, "Boot CPU is unpluggable"); - goto out; + error_setg(errp, "Boot CPU is unpluggable"); + return; } =20 hotplug_handler_unplug_request(HOTPLUG_HANDLER(pcms->acpi_dev), dev, - &local_err); - if (local_err) { - goto out; + errp); + if (*errp) { + return; } =20 - out: - error_propagate(errp, local_err); - } =20 static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUArchId *found_cpu; - Error *local_err =3D NULL; X86CPU *cpu =3D X86_CPU(dev); PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); =20 - hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_er= r); - if (local_err) { - goto out; + hotplug_handler_unplug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, errp); + if (*errp) { + return; } =20 found_cpu =3D pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, NULL); @@ -2199,8 +2185,6 @@ static void pc_cpu_unplug_cb(HotplugHandler *hotplug_= dev, /* Update the number of CPUs in CMOS */ rtc_set_cpus_count(pcms->rtc, pcms->boot_cpus); fw_cfg_modify_i16(pcms->fw_cfg, FW_CFG_NB_CPUS, pcms->boot_cpus); - out: - error_propagate(errp, local_err); } =20 static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev, @@ -2353,8 +2337,8 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_d= ev, static void pc_virtio_pmem_pci_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); HotplugHandler *hotplug_dev2 =3D qdev_get_bus_hotplug_handler(dev); - Error *local_err =3D NULL; =20 if (!hotplug_dev2) { /* @@ -2370,18 +2354,17 @@ static void pc_virtio_pmem_pci_pre_plug(HotplugHand= ler *hotplug_dev, * succeeds, branch of to the actual hotplug handler. */ memory_device_pre_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev), NULL, - &local_err); - if (!local_err) { - hotplug_handler_pre_plug(hotplug_dev2, dev, &local_err); + errp); + if (!*errp) { + hotplug_handler_pre_plug(hotplug_dev2, dev, errp); } - error_propagate(errp, local_err); } =20 static void pc_virtio_pmem_pci_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); HotplugHandler *hotplug_dev2 =3D qdev_get_bus_hotplug_handler(dev); - Error *local_err =3D NULL; =20 /* * Plug the memory device first and then branch off to the actual @@ -2389,11 +2372,10 @@ static void pc_virtio_pmem_pci_plug(HotplugHandler = *hotplug_dev, * device bits. */ memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); - hotplug_handler_plug(hotplug_dev2, dev, &local_err); - if (local_err) { + hotplug_handler_plug(hotplug_dev2, dev, errp); + if (*errp) { memory_device_unplug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); } - error_propagate(errp, local_err); } =20 static void pc_virtio_pmem_pci_unplug_request(HotplugHandler *hotplug_dev, @@ -2504,20 +2486,18 @@ static void pc_machine_set_max_ram_below_4g(Object = *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); PCMachineState *pcms =3D PC_MACHINE(obj); - Error *error =3D NULL; uint64_t value; =20 - visit_type_size(v, name, &value, &error); - if (error) { - error_propagate(errp, error); + visit_type_size(v, name, &value, errp); + if (*errp) { return; } if (value > 4 * GiB) { - error_setg(&error, + error_setg(errp, "Machine option 'max-ram-below-4g=3D%"PRIu64 "' expects size less than or equal to 4G", value); - error_propagate(errp, error); return; } =20 diff --git a/hw/intc/nios2_iic.c b/hw/intc/nios2_iic.c index 3a5d86c2a4..a291536bbe 100644 --- a/hw/intc/nios2_iic.c +++ b/hw/intc/nios2_iic.c @@ -65,13 +65,13 @@ static void altera_iic_init(Object *obj) =20 static void altera_iic_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); struct AlteraIIC *pv =3D ALTERA_IIC(dev); - Error *err =3D NULL; =20 - pv->cpu =3D object_property_get_link(OBJECT(dev), "cpu", &err); + pv->cpu =3D object_property_get_link(OBJECT(dev), "cpu", errp); if (!pv->cpu) { error_setg(errp, "altera,iic: CPU link not found: %s", - error_get_pretty(err)); + error_get_pretty(*errp)); return; } } diff --git a/hw/mips/cps.c b/hw/mips/cps.c index 1660f86908..0ea7959193 100644 --- a/hw/mips/cps.c +++ b/hw/mips/cps.c @@ -67,11 +67,11 @@ static bool cpu_mips_itu_supported(CPUMIPSState *env) =20 static void mips_cps_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); 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; @@ -101,16 +101,15 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) 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); - object_property_set_int(OBJECT(&s->itu), 16, "num-semaphores", &er= r); + object_property_set_int(OBJECT(&s->itu), 16, "num-fifo", errp); + object_property_set_int(OBJECT(&s->itu), 16, "num-semaphores", err= p); object_property_set_bool(OBJECT(&s->itu), saar_present, "saar-pres= ent", - &err); + errp); if (saar_present) { qdev_prop_set_ptr(DEVICE(&s->itu), "saar", (void *)&env->CP0_S= AAR); } - object_property_set_bool(OBJECT(&s->itu), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->itu), true, "realized", errp); + if (*errp) { return; } =20 @@ -121,11 +120,10 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) /* 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); - object_property_set_int(OBJECT(&s->cpc), 1, "vp-start-running", &err); - object_property_set_bool(OBJECT(&s->cpc), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(OBJECT(&s->cpc), s->num_vp, "num-vp", errp); + object_property_set_int(OBJECT(&s->cpc), 1, "vp-start-running", errp); + object_property_set_bool(OBJECT(&s->cpc), true, "realized", errp); + if (*errp) { return; } =20 @@ -135,11 +133,10 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) /* 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); - object_property_set_int(OBJECT(&s->gic), 128, "num-irq", &err); - object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(OBJECT(&s->gic), s->num_vp, "num-vp", errp); + object_property_set_int(OBJECT(&s->gic), 128, "num-irq", errp); + object_property_set_bool(OBJECT(&s->gic), true, "realized", errp); + if (*errp) { return; } =20 @@ -151,14 +148,13 @@ static void mips_cps_realize(DeviceState *dev, Error = **errp) =20 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); - object_property_set_int(OBJECT(&s->gcr), 0x800, "gcr-rev", &err); - object_property_set_int(OBJECT(&s->gcr), gcr_base, "gcr-base", &err); - object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->gic.mr), "gic", &= err); - object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->cpc.mr), "cpc", &= err); - object_property_set_bool(OBJECT(&s->gcr), true, "realized", &err); - if (err !=3D NULL) { - error_propagate(errp, err); + object_property_set_int(OBJECT(&s->gcr), s->num_vp, "num-vp", errp); + object_property_set_int(OBJECT(&s->gcr), 0x800, "gcr-rev", errp); + object_property_set_int(OBJECT(&s->gcr), gcr_base, "gcr-base", errp); + object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->gic.mr), "gic", e= rrp); + object_property_set_link(OBJECT(&s->gcr), OBJECT(&s->cpc.mr), "cpc", e= rrp); + object_property_set_bool(OBJECT(&s->gcr), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c index 5b98227db6..4c83693e48 100644 --- a/hw/riscv/riscv_hart.c +++ b/hw/riscv/riscv_hart.c @@ -43,7 +43,7 @@ static void riscv_harts_cpu_reset(void *opaque) static void riscv_hart_realize(RISCVHartArrayState *s, int idx, char *cpu_type, Error **errp) { - Error *err =3D NULL; + ERRP_AUTO_PROPAGATE(); =20 object_initialize_child(OBJECT(s), "harts[*]", &s->harts[idx], sizeof(RISCVCPU), cpu_type, @@ -51,9 +51,8 @@ static void riscv_hart_realize(RISCVHartArrayState *s, in= t idx, s->harts[idx].env.mhartid =3D s->hartid_base + idx; qemu_register_reset(riscv_harts_cpu_reset, &s->harts[idx]); object_property_set_bool(OBJECT(&s->harts[idx]), true, - "realized", &err); - if (err) { - error_propagate(errp, err); + "realized", errp); + if (*errp) { return; } } diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index 0f9d641a0e..fbac83c684 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -134,9 +134,9 @@ static void riscv_sifive_e_soc_init(Object *obj) =20 static void riscv_sifive_e_soc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); const struct MemmapEntry *memmap =3D sifive_e_memmap; - Error *err =3D NULL; =20 SiFiveESoCState *s =3D RISCV_E_SOC(dev); MemoryRegion *sys_mem =3D get_system_memory(); @@ -171,9 +171,8 @@ static void riscv_sifive_e_soc_realize(DeviceState *dev= , Error **errp) =20 /* GPIO */ =20 - object_property_set_bool(OBJECT(&s->gpio), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gpio), true, "realized", errp); + if (*errp) { return; } =20 diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 9f8e84bf2e..ab30e78969 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -426,6 +426,7 @@ static void riscv_sifive_u_soc_init(Object *obj) =20 static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MachineState *ms =3D MACHINE(qdev_get_machine()); SiFiveUSoCState *s =3D RISCV_U_SOC(dev); const struct MemmapEntry *memmap =3D sifive_u_memmap; @@ -435,7 +436,6 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev= , Error **errp) char *plic_hart_config; size_t plic_hart_config_len; int i; - Error *err =3D NULL; NICInfo *nd =3D &nd_table[0]; =20 object_property_set_bool(OBJECT(&s->e_cpus), true, "realized", @@ -493,10 +493,10 @@ static void riscv_sifive_u_soc_realize(DeviceState *d= ev, Error **errp) memmap[SIFIVE_U_CLINT].size, ms->smp.cpus, SIFIVE_SIP_BASE, SIFIVE_TIMECMP_BASE, SIFIVE_TIME_BASE); =20 - object_property_set_bool(OBJECT(&s->prci), true, "realized", &err); + object_property_set_bool(OBJECT(&s->prci), true, "realized", errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->prci), 0, memmap[SIFIVE_U_PRCI].bas= e); =20 - object_property_set_bool(OBJECT(&s->otp), true, "realized", &err); + object_property_set_bool(OBJECT(&s->otp), true, "realized", errp); sysbus_mmio_map(SYS_BUS_DEVICE(&s->otp), 0, memmap[SIFIVE_U_OTP].base); =20 for (i =3D 0; i < SIFIVE_U_PLIC_NUM_SOURCES; i++) { @@ -509,9 +509,8 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev= , Error **errp) } object_property_set_int(OBJECT(&s->gem), GEM_REVISION, "revision", &error_abort); - object_property_set_bool(OBJECT(&s->gem), true, "realized", &err); - if (err) { - error_propagate(errp, err); + object_property_set_bool(OBJECT(&s->gem), true, "realized", errp); + if (*errp) { return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->gem), 0, memmap[SIFIVE_U_GEM].base); diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index 926e1af475..0aee7abc69 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -265,11 +265,11 @@ static void milkymist_memcard_init(Object *obj) =20 static void milkymist_memcard_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); MilkymistMemcardState *s =3D MILKYMIST_MEMCARD(dev); DeviceState *carddev; BlockBackend *blk; DriveInfo *dinfo; - Error *err =3D NULL; =20 qbus_create_inplace(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, dev, "sd-bus"); @@ -279,10 +279,11 @@ static void milkymist_memcard_realize(DeviceState *de= v, Error **errp) dinfo =3D drive_get_next(IF_SD); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; carddev =3D qdev_create(BUS(&s->sdbus), TYPE_SD_CARD); - qdev_prop_set_drive(carddev, "drive", blk, &err); - object_property_set_bool(OBJECT(carddev), true, "realized", &err); - if (err) { - error_setg(errp, "failed to init SD card: %s", error_get_pretty(er= r)); + qdev_prop_set_drive(carddev, "drive", blk, errp); + object_property_set_bool(OBJECT(carddev), true, "realized", errp); + if (*errp) { + error_setg(errp, "failed to init SD card: %s", + error_get_pretty(*errp)); return; } s->enabled =3D blk && blk_is_inserted(blk); diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index b3fd6643e8..f093783c34 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c @@ -56,13 +56,12 @@ static void alpha_cpu_disas_set_info(CPUState *cpu, dis= assemble_info *info) =20 static void alpha_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); AlphaCPUClass *acc =3D ALPHA_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 2399c14471..07b4bbe82b 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1200,12 +1200,12 @@ static void arm_cpu_finalizefn(Object *obj) =20 static void arm_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); ARMCPU *cpu =3D ARM_CPU(dev); ARMCPUClass *acc =3D ARM_CPU_GET_CLASS(dev); CPUARMState *env =3D &cpu->env; int pagebits; - Error *local_err =3D NULL; bool no_aa32 =3D false; =20 /* If we needed to query the host kernel for the CPU features @@ -1248,9 +1248,8 @@ static void arm_cpu_realizefn(DeviceState *dev, Error= **errp) arm_gt_stimer_cb, cpu); #endif =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index d7f5bf610a..15a96e68be 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -266,17 +266,16 @@ static void cpu_max_get_sve_vq(Object *obj, Visitor *= v, const char *name, static void cpu_max_set_sve_vq(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); ARMCPU *cpu =3D ARM_CPU(obj); - Error *err =3D NULL; =20 - visit_type_uint32(v, name, &cpu->sve_max_vq, &err); + visit_type_uint32(v, name, &cpu->sve_max_vq, errp); =20 - if (!err && (cpu->sve_max_vq =3D=3D 0 || cpu->sve_max_vq > ARM_MAX_VQ)= ) { - error_setg(&err, "unsupported SVE vector length"); - error_append_hint(&err, "Valid sve-max-vq in range [1-%d]\n", + if (!*errp && (cpu->sve_max_vq =3D=3D 0 || cpu->sve_max_vq > ARM_MAX_V= Q)) { + error_setg(errp, "unsupported SVE vector length"); + error_append_hint(errp, "Valid sve-max-vq in range [1-%d]\n", ARM_MAX_VQ); } - error_propagate(errp, err); } =20 /* -cpu max: if KVM is enabled, like -cpu host (best possible with this ho= st); diff --git a/target/cris/cpu.c b/target/cris/cpu.c index 7adfd6caf4..296b68dff6 100644 --- a/target/cris/cpu.c +++ b/target/cris/cpu.c @@ -124,13 +124,12 @@ void cris_cpu_list(void) =20 static void cris_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); CRISCPUClass *ccc =3D CRIS_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c index 71b6aca45d..f6f2e3980c 100644 --- a/target/hppa/cpu.c +++ b/target/hppa/cpu.c @@ -89,13 +89,12 @@ static void hppa_cpu_do_unaligned_access(CPUState *cs, = vaddr addr, =20 static void hppa_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); HPPACPUClass *acc =3D HPPA_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 44f1bbdcac..4e350906cb 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -3391,16 +3391,15 @@ static void x86_cpuid_version_set_family(Object *ob= j, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); CPUX86State *env =3D &cpu->env; const int64_t min =3D 0; const int64_t max =3D 0xff + 0xf; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -3434,16 +3433,15 @@ static void x86_cpuid_version_set_model(Object *obj= , Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); CPUX86State *env =3D &cpu->env; const int64_t min =3D 0; const int64_t max =3D 0xff; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -3472,16 +3470,15 @@ static void x86_cpuid_version_set_stepping(Object *= obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); CPUX86State *env =3D &cpu->env; const int64_t min =3D 0; const int64_t max =3D 0xf; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -3578,15 +3575,14 @@ static void x86_cpuid_get_tsc_freq(Object *obj, Vis= itor *v, const char *name, static void x86_cpuid_set_tsc_freq(Object *obj, Visitor *v, const char *na= me, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(obj); const int64_t min =3D 0; const int64_t max =3D INT64_MAX; - Error *local_err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } if (value < min || value > max) { @@ -4247,49 +4243,46 @@ static void x86_cpu_to_dict_full(X86CPU *cpu, QDict= *props) =20 static void object_apply_props(Object *obj, QDict *props, Error **errp) { + ERRP_AUTO_PROPAGATE(); const QDictEntry *prop; - Error *err =3D NULL; =20 for (prop =3D qdict_first(props); prop; prop =3D qdict_next(props, pro= p)) { object_property_set_qobject(obj, qdict_entry_value(prop), - qdict_entry_key(prop), &err); - if (err) { + qdict_entry_key(prop), errp); + if (*errp) { break; } } - - error_propagate(errp, err); } =20 /* Create X86CPU object according to model+props specification */ static X86CPU *x86_cpu_from_model(const char *model, QDict *props, Error *= *errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *xc =3D NULL; X86CPUClass *xcc; - Error *err =3D NULL; =20 xcc =3D X86_CPU_CLASS(cpu_class_by_name(TYPE_X86_CPU, model)); if (xcc =3D=3D NULL) { - error_setg(&err, "CPU model '%s' not found", model); + error_setg(errp, "CPU model '%s' not found", model); goto out; } =20 xc =3D X86_CPU(object_new(object_class_get_name(OBJECT_CLASS(xcc)))); if (props) { - object_apply_props(OBJECT(xc), props, &err); - if (err) { + object_apply_props(OBJECT(xc), props, errp); + if (*errp) { goto out; } } =20 - x86_cpu_expand_features(xc, &err); - if (err) { + x86_cpu_expand_features(xc, errp); + if (*errp) { goto out; } =20 out: - if (err) { - error_propagate(errp, err); + if (*errp) { object_unref(OBJECT(xc)); xc =3D NULL; } @@ -4301,8 +4294,8 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, CpuModelInfo *model, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *xc =3D NULL; - Error *err =3D NULL; CpuModelExpansionInfo *ret =3D g_new0(CpuModelExpansionInfo, 1); QDict *props =3D NULL; const char *base_name; @@ -4310,8 +4303,8 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, xc =3D x86_cpu_from_model(model->name, model->has_props ? qobject_to(QDict, model->props) : - NULL, &err); - if (err) { + NULL, errp); + if (*errp) { goto out; } =20 @@ -4335,7 +4328,7 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, x86_cpu_to_dict_full(xc, props); break; default: - error_setg(&err, "Unsupported expansion type"); + error_setg(errp, "Unsupported expansion type"); goto out; } =20 @@ -4345,8 +4338,7 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType t= ype, =20 out: object_unref(OBJECT(xc)); - if (err) { - error_propagate(errp, err); + if (*errp) { qapi_free_CpuModelExpansionInfo(ret); ret =3D NULL; } @@ -5297,24 +5289,24 @@ static void x86_cpu_enable_xsave_components(X86CPU = *cpu) */ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUX86State *env =3D &cpu->env; FeatureWord w; int i; GList *l; - Error *local_err =3D NULL; =20 for (l =3D plus_features; l; l =3D l->next) { const char *prop =3D l->data; - object_property_set_bool(OBJECT(cpu), true, prop, &local_err); - if (local_err) { + object_property_set_bool(OBJECT(cpu), true, prop, errp); + if (*errp) { goto out; } } =20 for (l =3D minus_features; l; l =3D l->next) { const char *prop =3D l->data; - object_property_set_bool(OBJECT(cpu), false, prop, &local_err); - if (local_err) { + object_property_set_bool(OBJECT(cpu), false, prop, errp); + if (*errp) { goto out; } } @@ -5410,8 +5402,7 @@ static void x86_cpu_expand_features(X86CPU *cpu, Erro= r **errp) } =20 out: - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { } } =20 @@ -5471,17 +5462,17 @@ static void x86_cpu_filter_features(X86CPU *cpu, bo= ol verbose) =20 static void x86_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); X86CPU *cpu =3D X86_CPU(dev); X86CPUClass *xcc =3D X86_CPU_GET_CLASS(dev); CPUX86State *env =3D &cpu->env; - Error *local_err =3D NULL; static bool ht_warned; =20 if (xcc->host_cpuid_required) { if (!accel_uses_host_cpuid()) { char *name =3D x86_cpu_class_get_model_name(xcc); - error_setg(&local_err, "CPU model '%s' requires KVM", name); + error_setg(errp, "CPU model '%s' requires KVM", name); g_free(name); goto out; } @@ -5502,15 +5493,15 @@ static void x86_cpu_realizefn(DeviceState *dev, Err= or **errp) return; } =20 - x86_cpu_expand_features(cpu, &local_err); - if (local_err) { + x86_cpu_expand_features(cpu, errp); + if (*errp) { goto out; } =20 x86_cpu_filter_features(cpu, cpu->check_cpuid || cpu->enforce_cpuid); =20 if (cpu->enforce_cpuid && x86_cpu_have_filtered_features(cpu)) { - error_setg(&local_err, + error_setg(errp, accel_uses_host_cpuid() ? "Host doesn't support requested features" : "TCG doesn't support requested features"); @@ -5625,9 +5616,8 @@ static void x86_cpu_realizefn(DeviceState *dev, Error= **errp) } =20 =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 @@ -5636,8 +5626,8 @@ static void x86_cpu_realizefn(DeviceState *dev, Error= **errp) qemu_register_reset(x86_cpu_machine_reset_cb, cpu); =20 if (cpu->env.features[FEAT_1_EDX] & CPUID_APIC || ms->smp.cpus > 1) { - x86_cpu_apic_create(cpu, &local_err); - if (local_err !=3D NULL) { + x86_cpu_apic_create(cpu, errp); + if (*errp) { goto out; } } @@ -5694,26 +5684,25 @@ static void x86_cpu_realizefn(DeviceState *dev, Err= or **errp) ht_warned =3D true; } =20 - x86_cpu_apic_realize(cpu, &local_err); - if (local_err !=3D NULL) { + x86_cpu_apic_realize(cpu, errp); + if (*errp) { goto out; } cpu_reset(cs); =20 - xcc->parent_realize(dev, &local_err); + xcc->parent_realize(dev, errp); =20 out: - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + if (*errp) { return; } } =20 static void x86_cpu_unrealizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); X86CPU *cpu =3D X86_CPU(dev); X86CPUClass *xcc =3D X86_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 #ifndef CONFIG_USER_ONLY cpu_remove_sync(CPU(dev)); @@ -5725,9 +5714,8 @@ static void x86_cpu_unrealizefn(DeviceState *dev, Err= or **errp) cpu->apic_state =3D NULL; } =20 - xcc->parent_unrealize(dev, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + xcc->parent_unrealize(dev, errp); + if (*errp) { return; } } @@ -5750,10 +5738,10 @@ static void x86_cpu_get_bit_prop(Object *obj, Visit= or *v, const char *name, static void x86_cpu_set_bit_prop(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); DeviceState *dev =3D DEVICE(obj); X86CPU *cpu =3D X86_CPU(obj); BitProperty *fp =3D opaque; - Error *local_err =3D NULL; bool value; =20 if (dev->realized) { @@ -5761,9 +5749,8 @@ static void x86_cpu_set_bit_prop(Object *obj, Visitor= *v, const char *name, return; } =20 - visit_type_bool(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_bool(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/target/lm32/cpu.c b/target/lm32/cpu.c index b35537de62..c876c8d7d4 100644 --- a/target/lm32/cpu.c +++ b/target/lm32/cpu.c @@ -122,13 +122,12 @@ static void lm32_cpu_disas_set_info(CPUState *cpu, di= sassemble_info *info) =20 static void lm32_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); LM32CPUClass *lcc =3D LM32_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index e6596de29c..b83eca5cfa 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -216,16 +216,15 @@ static void any_cpu_initfn(Object *obj) =20 static void m68k_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); M68kCPU *cpu =3D M68K_CPU(dev); M68kCPUClass *mcc =3D M68K_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 register_m68k_insns(&cpu->env); =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 9cfd7445e7..d1591cc23a 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -140,6 +140,7 @@ static void mb_disas_set_info(CPUState *cpu, disassembl= e_info *info) =20 static void mb_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); MicroBlazeCPUClass *mcc =3D MICROBLAZE_CPU_GET_CLASS(dev); MicroBlazeCPU *cpu =3D MICROBLAZE_CPU(cs); @@ -147,11 +148,9 @@ static void mb_cpu_realizefn(DeviceState *dev, Error *= *errp) uint8_t version_code =3D 0; const char *version; int i =3D 0; - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/mips/cpu.c b/target/mips/cpu.c index bbcf7ca463..89b661e7ff 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -136,14 +136,13 @@ static void mips_cpu_disas_set_info(CPUState *s, disa= ssemble_info *info) =20 static void mips_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); MIPSCPU *cpu =3D MIPS_CPU(dev); MIPSCPUClass *mcc =3D MIPS_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/moxie/cpu.c b/target/moxie/cpu.c index 48996d0554..19fe37284c 100644 --- a/target/moxie/cpu.c +++ b/target/moxie/cpu.c @@ -55,13 +55,12 @@ static void moxie_cpu_disas_set_info(CPUState *cpu, dis= assemble_info *info) =20 static void moxie_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); MoxieCPUClass *mcc =3D MOXIE_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index ca9c7a6df5..3cdaa0010b 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -82,13 +82,12 @@ static ObjectClass *nios2_cpu_class_by_name(const char = *cpu_model) =20 static void nios2_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); Nios2CPUClass *ncc =3D NIOS2_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c index 506aec6bfb..f297a2f96d 100644 --- a/target/openrisc/cpu.c +++ b/target/openrisc/cpu.c @@ -67,13 +67,12 @@ static void openrisc_cpu_reset(CPUState *s) =20 static void openrisc_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); OpenRISCCPUClass *occ =3D OPENRISC_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/ppc/compat.c b/target/ppc/compat.c index 7de4bf3122..610de2fb07 100644 --- a/target/ppc/compat.c +++ b/target/ppc/compat.c @@ -251,13 +251,12 @@ static void ppc_compat_prop_get(Object *obj, Visitor = *v, const char *name, static void ppc_compat_prop_set(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); char *value; uint32_t compat_pvr; =20 - visit_type_str(v, name, &value, &local_err); - if (local_err) { - error_propagate(errp, local_err); + visit_type_str(v, name, &value, errp); + if (*errp) { return; } =20 @@ -292,16 +291,16 @@ void ppc_compat_add_property(Object *obj, const char = *name, uint32_t *compat_pvr, const char *basedesc, Error **errp) { - Error *local_err =3D NULL; + ERRP_AUTO_PROPAGATE(); gchar *namesv[ARRAY_SIZE(compat_table) + 1]; gchar *names, *desc; int i; =20 object_property_add(obj, name, "string", ppc_compat_prop_get, ppc_compat_prop_set, NULL, - compat_pvr, &local_err); - if (local_err) { - goto out; + compat_pvr, errp); + if (*errp) { + return; } =20 for (i =3D 0; i < ARRAY_SIZE(compat_table); i++) { @@ -315,11 +314,8 @@ void ppc_compat_add_property(Object *obj, const char *= name, =20 names =3D g_strjoinv(", ", namesv); desc =3D g_strdup_printf("%s. Valid values are %s.", basedesc, names); - object_property_set_description(obj, name, desc, &local_err); + object_property_set_description(obj, name, desc, errp); =20 g_free(names); g_free(desc); - -out: - error_propagate(errp, local_err); } diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.in= c.c index ba726dec4d..1f4c2d4b94 100644 --- a/target/ppc/translate_init.inc.c +++ b/target/ppc/translate_init.inc.c @@ -9807,14 +9807,13 @@ static int ppc_fixup_cpu(PowerPCCPU *cpu) =20 static void ppc_cpu_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); PowerPCCPU *cpu =3D POWERPC_CPU(dev); PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } if (cpu->vcpu_id =3D=3D UNASSIGNED_CPU_INDEX) { @@ -9828,9 +9827,8 @@ static void ppc_cpu_realize(DeviceState *dev, Error *= *errp) } } =20 - create_ppc_opcodes(cpu, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + create_ppc_opcodes(cpu, errp); + if (*errp) { goto unrealize; } init_ppc_proc(cpu); @@ -10033,15 +10031,14 @@ unrealize: =20 static void ppc_cpu_unrealize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PowerPCCPU *cpu =3D POWERPC_CPU(dev); PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); - Error *local_err =3D NULL; opc_handler_t **table, **table_2; int i, j, k; =20 - pcc->parent_unrealize(dev, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + pcc->parent_unrealize(dev, errp); + if (*errp) { return; } =20 @@ -10188,6 +10185,7 @@ static ObjectClass *ppc_cpu_class_by_name(const cha= r *name) static void ppc_cpu_parse_featurestr(const char *type, char *features, Error **errp) { + ERRP_AUTO_PROPAGATE(); Object *machine =3D qdev_get_machine(); const PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(object_class_by_name(= type)); =20 @@ -10199,7 +10197,6 @@ static void ppc_cpu_parse_featurestr(const char *ty= pe, char *features, int i; char **inpieces; char *s =3D features; - Error *local_err =3D NULL; char *compat_str =3D NULL; =20 /* @@ -10227,11 +10224,10 @@ static void ppc_cpu_parse_featurestr(const char *= type, char *features, =20 if (compat_str) { char *v =3D compat_str + strlen("compat=3D"); - object_property_set_str(machine, v, "max-cpu-compat", &local_e= rr); + object_property_set_str(machine, v, "max-cpu-compat", errp); } g_strfreev(inpieces); - if (local_err) { - error_propagate(errp, local_err); + if (*errp) { return; } } diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index f13e298a36..6f27404b89 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -316,17 +316,16 @@ static void riscv_cpu_disas_set_info(CPUState *s, dis= assemble_info *info) =20 static void riscv_cpu_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); RISCVCPU *cpu =3D RISCV_CPU(dev); CPURISCVState *env =3D &cpu->env; RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(dev); int priv_version =3D PRIV_VERSION_1_11_0; target_ulong target_misa =3D 0; - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c index d0a7707991..d17d398a75 100644 --- a/target/sh4/cpu.c +++ b/target/sh4/cpu.c @@ -174,13 +174,12 @@ static void sh7785_class_init(ObjectClass *oc, void *= data) =20 static void superh_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); SuperHCPUClass *scc =3D SUPERH_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index bc65929552..2f631ed63b 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -736,9 +736,9 @@ static ObjectClass *sparc_cpu_class_by_name(const char = *cpu_model) =20 static void sparc_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); SPARCCPUClass *scc =3D SPARC_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; SPARCCPU *cpu =3D SPARC_CPU(dev); CPUSPARCState *env =3D &cpu->env; =20 @@ -762,9 +762,8 @@ static void sparc_cpu_realizefn(DeviceState *dev, Error= **errp) env->version |=3D env->def.nwindows - 1; #endif =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 @@ -798,15 +797,14 @@ static void sparc_get_nwindows(Object *obj, Visitor *= v, const char *name, static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { + ERRP_AUTO_PROPAGATE(); const int64_t min =3D MIN_NWINDOWS; const int64_t max =3D MAX_NWINDOWS; SPARCCPU *cpu =3D SPARC_CPU(obj); - Error *err =3D NULL; int64_t value; =20 - visit_type_int(v, name, &value, &err); - if (err) { - error_propagate(errp, err); + visit_type_int(v, name, &value, errp); + if (*errp) { return; } =20 diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index df807c1d74..becb4a1ae9 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -71,15 +71,14 @@ static bool tricore_cpu_has_work(CPUState *cs) =20 static void tricore_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); TriCoreCPU *cpu =3D TRICORE_CPU(dev); TriCoreCPUClass *tcc =3D TRICORE_CPU_GET_CLASS(dev); CPUTriCoreState *env =3D &cpu->env; - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/unicore32/cpu.c b/target/unicore32/cpu.c index b27fb9689f..1f3fbe6c1a 100644 --- a/target/unicore32/cpu.c +++ b/target/unicore32/cpu.c @@ -84,13 +84,12 @@ static void uc32_any_cpu_initfn(Object *obj) =20 static void uc32_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); UniCore32CPUClass *ucc =3D UNICORE32_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index c65dcf9dd7..0b2811f8e0 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -131,17 +131,16 @@ static void xtensa_cpu_disas_set_info(CPUState *cs, d= isassemble_info *info) =20 static void xtensa_cpu_realizefn(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); CPUState *cs =3D CPU(dev); XtensaCPUClass *xcc =3D XTENSA_CPU_GET_CLASS(dev); - Error *local_err =3D NULL; =20 #ifndef CONFIG_USER_ONLY xtensa_irq_init(&XTENSA_CPU(dev)->env); #endif =20 - cpu_exec_realizefn(cs, &local_err); - if (local_err !=3D NULL) { - error_propagate(errp, local_err); + cpu_exec_realizefn(cs, errp); + if (*errp) { return; } =20 --=20 2.21.0