On Mon, Oct 03, 2016 at 02:13:20PM +0200, Greg Kurz wrote: > If the user passes an alias name and a property to -cpu, QEMU fails to > find the CPU definition and exits. > > $ qemu-system-ppc64 -cpu POWER8E,compat=power7 > qemu-system-ppc64: Unable to find sPAPR CPU Core definition > > This happens because spapr_get_cpu_core_type() passes the full string from > the command line (i.e. "POWER8E,compat=power7") to ppc_cpu_lookup_alias(), > instead of the alias name piece only (i.e. "POWER8E"). > > The fix is to pass model_pieces[0] to ppc_cpu_lookup_alias(). > > Signed-off-by: Greg Kurz <gr...@kaod.org>
Reviewed-by: Bharata B Rao <bhar...@linux.vnet.ibm.com> > --- > hw/ppc/spapr_cpu_core.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c > index 6f0533c34259..35d1873b9ff3 100644 > --- a/hw/ppc/spapr_cpu_core.c > +++ b/hw/ppc/spapr_cpu_core.c > @@ -92,20 +92,20 @@ char *spapr_get_cpu_core_type(const char *model) > gchar **model_pieces = g_strsplit(model, ",", 2); > > core_type = g_strdup_printf("%s-%s", model_pieces[0], > TYPE_SPAPR_CPU_CORE); > - g_strfreev(model_pieces); > > /* Check whether it exists or whether we have to look up an alias name */ > if (!object_class_by_name(core_type)) { > const char *realmodel; > > g_free(core_type); > - realmodel = ppc_cpu_lookup_alias(model); > + core_type = NULL; > + realmodel = ppc_cpu_lookup_alias(model_pieces[0]); > if (realmodel) { > - return spapr_get_cpu_core_type(realmodel); > + core_type = spapr_get_cpu_core_type(realmodel); > } > - return NULL; > } > > + g_strfreev(model_pieces); > return core_type; > } >