On Thu, Jun 14, 2018 at 11:50:57PM +0200, Greg Kurz wrote: > This moves some code out from spapr_cpu_core_realize() for clarity. No > functional change. > > Signed-off-by: Greg Kurz <gr...@kaod.org>
Applied to ppc-for-3.0, thanks. > --- > hw/ppc/spapr_cpu_core.c | 73 > +++++++++++++++++++++++++++++------------------ > 1 file changed, 45 insertions(+), 28 deletions(-) > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c > index 04c818a6ecac..0ebaf804a9bc 100644 > --- a/hw/ppc/spapr_cpu_core.c > +++ b/hw/ppc/spapr_cpu_core.c > @@ -172,6 +172,49 @@ error: > error_propagate(errp, local_err); > } > > +static PowerPCCPU *spapr_create_vcpu(sPAPRCPUCore *sc, int i, Error **errp) > +{ > + sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(sc); > + CPUCore *cc = CPU_CORE(sc); > + Object *obj; > + char *id; > + CPUState *cs; > + PowerPCCPU *cpu; > + Error *local_err = NULL; > + > + obj = object_new(scc->cpu_type); > + > + cs = CPU(obj); > + cpu = POWERPC_CPU(obj); > + cs->cpu_index = cc->core_id + i; > + spapr_set_vcpu_id(cpu, cs->cpu_index, &local_err); > + if (local_err) { > + goto err; > + } > + > + cpu->node_id = sc->node_id; > + > + id = g_strdup_printf("thread[%d]", i); > + object_property_add_child(OBJECT(sc), id, obj, &local_err); > + g_free(id); > + if (local_err) { > + goto err; > + } > + > + object_unref(obj); > + return cpu; > + > +err: > + object_unref(obj); > + error_propagate(errp, local_err); > + return NULL; > +} > + > +static void spapr_delete_vcpu(PowerPCCPU *cpu) > +{ > + object_unparent(OBJECT(cpu)); > +} > + > static void spapr_cpu_core_realize(DeviceState *dev, Error **errp) > { > /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user > @@ -181,10 +224,8 @@ static void spapr_cpu_core_realize(DeviceState *dev, > Error **errp) > (sPAPRMachineState *) object_dynamic_cast(qdev_get_machine(), > TYPE_SPAPR_MACHINE); > sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev)); > - sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev)); > CPUCore *cc = CPU_CORE(OBJECT(dev)); > Error *local_err = NULL; > - Object *obj; > int i, j; > > if (!spapr) { > @@ -194,33 +235,10 @@ 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++) { > - char *id; > - CPUState *cs; > - PowerPCCPU *cpu; > - > - obj = object_new(scc->cpu_type); > - > - cs = CPU(obj); > - cpu = sc->threads[i] = POWERPC_CPU(obj); > - cs->cpu_index = cc->core_id + i; > - spapr_set_vcpu_id(cpu, cs->cpu_index, &local_err); > - if (local_err) { > - object_unref(obj); > - goto err; > - } > - > - > - /* Set NUMA node for the threads belonged to core */ > - cpu->node_id = sc->node_id; > - > - id = g_strdup_printf("thread[%d]", i); > - object_property_add_child(OBJECT(sc), id, obj, &local_err); > - g_free(id); > + sc->threads[i] = spapr_create_vcpu(sc, i, &local_err); > if (local_err) { > - object_unref(obj); > goto err; > } > - object_unref(obj); > } > > for (j = 0; j < cc->nr_threads; j++) { > @@ -237,8 +255,7 @@ err_unrealize: > } > err: > while (--i >= 0) { > - obj = OBJECT(sc->threads[i]); > - object_unparent(obj); > + spapr_delete_vcpu(sc->threads[i]); > } > g_free(sc->threads); > error_propagate(errp, local_err); > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature