Message ID | 147549680021.17386.17361379735084290696.stgit@bahia (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 <groug@kaod.org> Reviewed-by: Bharata B Rao <bharata@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; > } >
On Mon, Oct 03, 2016 at 08:44:22PM +0530, Bharata B Rao wrote: > 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 <groug@kaod.org> > > Reviewed-by: Bharata B Rao <bharata@linux.vnet.ibm.com> Applied to ppc-for-2.8, thanks. > > > --- > > 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; > > } > > >
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; }
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 <groug@kaod.org> --- hw/ppc/spapr_cpu_core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)