Skip to content

Commit

Permalink
spapr: fix check of cpu alias name in spapr_get_cpu_core_type()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Bharata B Rao <[email protected]>
Signed-off-by: David Gibson <[email protected]>
  • Loading branch information
gkurz authored and dgibson committed Oct 6, 2016
1 parent aa9026f commit e17a877
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions hw/ppc/spapr_cpu_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit e17a877

Please sign in to comment.