All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: "Vladimir Sementsov-Ogievskiy" <vsementsov@virtuozzo.com>,
	dbarboza@redhat.com, qemu-devel@nongnu.org, groug@kaod.org,
	qemu-ppc@nonngu.org, "Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: [PULL 12/20] spapr: Simplify error handling in spapr_cpu_core_realize()
Date: Fri,  9 Oct 2020 21:19:43 +1100	[thread overview]
Message-ID: <20201009101951.1569252-13-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20201009101951.1569252-1-david@gibson.dropbear.id.au>

From: Greg Kurz <groug@kaod.org>

As recommended in "qapi/error.h", add a bool return value to
spapr_realize_vcpu() and use it in spapr_cpu_core_realize()
in order to get rid of the error propagation overhead.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <20200914123505.612812-12-groug@kaod.org>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_cpu_core.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 0c879d4da2..b03620823a 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -227,14 +227,14 @@ static void spapr_cpu_core_unrealize(DeviceState *dev)
     g_free(sc->threads);
 }
 
-static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
+static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
                                SpaprCpuCore *sc, Error **errp)
 {
     CPUPPCState *env = &cpu->env;
     CPUState *cs = CPU(cpu);
 
     if (!qdev_realize(DEVICE(cpu), NULL, errp)) {
-        return;
+        return false;
     }
 
     /* Set time-base frequency to 512 MHz */
@@ -245,13 +245,14 @@ static void spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
 
     if (spapr_irq_cpu_intc_create(spapr, cpu, errp) < 0) {
         cpu_remove_sync(CPU(cpu));
-        return;
+        return false;
     }
 
     if (!sc->pre_3_0_migration) {
         vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
                          cpu->machine_data);
     }
+    return true;
 }
 
 static PowerPCCPU *spapr_create_vcpu(SpaprCpuCore *sc, int i, Error **errp)
@@ -312,7 +313,6 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
                                                   TYPE_SPAPR_MACHINE);
     SpaprCpuCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
     CPUCore *cc = CPU_CORE(OBJECT(dev));
-    Error *local_err = NULL;
     int i, j;
 
     if (!spapr) {
@@ -322,15 +322,14 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
 
     sc->threads = g_new(PowerPCCPU *, cc->nr_threads);
     for (i = 0; i < cc->nr_threads; i++) {
-        sc->threads[i] = spapr_create_vcpu(sc, i, &local_err);
-        if (local_err) {
+        sc->threads[i] = spapr_create_vcpu(sc, i, errp);
+        if (!sc->threads[i]) {
             goto err;
         }
     }
 
     for (j = 0; j < cc->nr_threads; j++) {
-        spapr_realize_vcpu(sc->threads[j], spapr, sc, &local_err);
-        if (local_err) {
+        if (!spapr_realize_vcpu(sc->threads[j], spapr, sc, errp)) {
             goto err_unrealize;
         }
     }
@@ -347,7 +346,6 @@ err:
         spapr_delete_vcpu(sc->threads[i], sc);
     }
     g_free(sc->threads);
-    error_propagate(errp, local_err);
 }
 
 static Property spapr_cpu_core_properties[] = {
-- 
2.26.2



  parent reply	other threads:[~2020-10-09 10:36 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-09 10:19 [PULL 00/20] ppc-for-5.2 queue 20201009 David Gibson
2020-10-09 10:19 ` [PULL 01/20] spapr: Handle HPT allocation failure in nested guest David Gibson
2020-10-09 10:19 ` [PULL 02/20] spapr: Fix error leak in spapr_realize_vcpu() David Gibson
2020-10-09 10:19 ` [PULL 03/20] ppc: Add a return value to ppc_set_compat() and ppc_set_compat_all() David Gibson
2020-10-09 10:19 ` [PULL 04/20] ppc: Fix return value in cpu_post_load() error path David Gibson
2020-10-09 10:19 ` [PULL 05/20] spapr: Simplify error handling in callers of ppc_set_compat() David Gibson
2020-10-09 10:19 ` [PULL 06/20] spapr: Get rid of cas_check_pvr() error reporting David Gibson
2020-10-09 10:19 ` [PULL 07/20] spapr: Simplify error handling in do_client_architecture_support() David Gibson
2020-10-09 10:19 ` [PULL 08/20] spapr: Simplify error handling in spapr_vio_busdev_realize() David Gibson
2020-10-09 10:19 ` [PULL 09/20] spapr: Add a return value to spapr_drc_attach() David Gibson
2020-10-09 10:19 ` [PULL 10/20] spapr: Simplify error handling in prop_get_fdt() David Gibson
2020-10-09 10:19 ` [PULL 11/20] spapr: Add a return value to spapr_set_vcpu_id() David Gibson
2020-10-09 10:19 ` David Gibson [this message]
2020-10-09 10:19 ` [PULL 13/20] spapr: Add a return value to spapr_nvdimm_validate() David Gibson
2020-10-09 10:19 ` [PULL 14/20] spapr: Add a return value to spapr_check_pagesize() David Gibson
2020-10-09 10:19 ` [PULL 15/20] ppc/pnv: Increase max firmware size David Gibson
2020-10-09 10:19 ` [PULL 16/20] spapr: add spapr_machine_using_legacy_numa() helper David Gibson
2020-10-09 10:19 ` [PULL 17/20] spapr_numa: forbid asymmetrical NUMA setups David Gibson
2020-10-09 10:19 ` [PULL 18/20] spapr_numa: change reference-points and maxdomain settings David Gibson
2020-10-09 10:19 ` [PULL 19/20] spapr_numa: consider user input when defining associativity David Gibson
2020-10-09 10:19 ` [PULL 20/20] specs/ppc-spapr-numa: update with new NUMA support David Gibson
2020-10-09 16:22 ` [PULL 00/20] ppc-for-5.2 queue 20201009 Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201009101951.1569252-13-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=dbarboza@redhat.com \
    --cc=groug@kaod.org \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nonngu.org \
    --cc=vsementsov@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.