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;
>  }
> 


Reply via email to