On Wed, Jul 06, 2016 at 02:14:25PM +0200, Greg Kurz wrote: > If we want to generate cpu_dt_id in the machine code, this must occur > before the cpu gets realized. We must open code the cpu creation to be > able to do this. > > This patch just does that. > > Signed-off-by: Greg Kurz <gr...@kaod.org> > --- > v3: don't parse cpu features as it is done in a previous patch
Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> > --- > hw/ppc/ppc.c | 32 +++++++++++++++++++++++++++++++- > 1 file changed, 31 insertions(+), 1 deletion(-) > > diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c > index 313b3f0b9a51..0df32a9b3965 100644 > --- a/hw/ppc/ppc.c > +++ b/hw/ppc/ppc.c > @@ -32,6 +32,7 @@ > #include "sysemu/cpus.h" > #include "hw/timer/m48t59.h" > #include "qemu/log.h" > +#include "qapi/error.h" > #include "qemu/error-report.h" > #include "qapi/error.h" > #include "hw/loader.h" > @@ -1354,7 +1355,36 @@ PowerPCCPU *ppc_get_vcpu_by_dt_id(int cpu_dt_id) > > PowerPCCPU *ppc_cpu_init(const char *cpu_model) > { > - return POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model)); > + PowerPCCPU *cpu; > + ObjectClass *oc; > + gchar **model_pieces; > + Error *err = NULL; > + > + model_pieces = g_strsplit(cpu_model, ",", 2); > + if (!model_pieces[0]) { > + error_report("Invalid/empty CPU model name"); > + return NULL; > + } > + > + oc = cpu_class_by_name(TYPE_POWERPC_CPU, model_pieces[0]); > + if (oc == NULL) { > + error_report("Unable to find CPU definition: %s", model_pieces[0]); > + goto out; > + } > + > + cpu = POWERPC_CPU(object_new(object_class_get_name(oc))); > + object_property_set_bool(OBJECT(cpu), true, "realized", &err); > + > +out: > + g_strfreev(model_pieces); > + > + if (err != NULL) { > + error_report_err(err); > + object_unref(OBJECT(cpu)); > + return NULL; > + } > + > + return cpu; > } > > void ppc_cpu_parse_features(const char *cpu_model) > -- 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