[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/20] spapr: Simplify error handling in spapr_cpu_core_realize()
From: |
David Gibson |
Subject: |
[PULL 12/20] spapr: Simplify error handling in spapr_cpu_core_realize() |
Date: |
Fri, 9 Oct 2020 21:19:43 +1100 |
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
- [PULL 08/20] spapr: Simplify error handling in spapr_vio_busdev_realize(), (continued)
- [PULL 08/20] spapr: Simplify error handling in spapr_vio_busdev_realize(), David Gibson, 2020/10/09
- [PULL 10/20] spapr: Simplify error handling in prop_get_fdt(), David Gibson, 2020/10/09
- [PULL 20/20] specs/ppc-spapr-numa: update with new NUMA support, David Gibson, 2020/10/09
- [PULL 18/20] spapr_numa: change reference-points and maxdomain settings, David Gibson, 2020/10/09
- [PULL 07/20] spapr: Simplify error handling in do_client_architecture_support(), David Gibson, 2020/10/09
- [PULL 09/20] spapr: Add a return value to spapr_drc_attach(), David Gibson, 2020/10/09
- [PULL 13/20] spapr: Add a return value to spapr_nvdimm_validate(), David Gibson, 2020/10/09
- [PULL 11/20] spapr: Add a return value to spapr_set_vcpu_id(), David Gibson, 2020/10/09
- [PULL 16/20] spapr: add spapr_machine_using_legacy_numa() helper, David Gibson, 2020/10/09
- [PULL 17/20] spapr_numa: forbid asymmetrical NUMA setups, David Gibson, 2020/10/09
- [PULL 12/20] spapr: Simplify error handling in spapr_cpu_core_realize(),
David Gibson <=
- [PULL 14/20] spapr: Add a return value to spapr_check_pagesize(), David Gibson, 2020/10/09
- [PULL 15/20] ppc/pnv: Increase max firmware size, David Gibson, 2020/10/09
- [PULL 19/20] spapr_numa: consider user input when defining associativity, David Gibson, 2020/10/09
- Re: [PULL 00/20] ppc-for-5.2 queue 20201009, Peter Maydell, 2020/10/09