Commit e17a8779 authored by Greg Kurz's avatar Greg Kurz Committed by David Gibson
Browse files

spapr: fix check of cpu alias name in spapr_get_cpu_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: default avatarGreg Kurz <groug@kaod.org>
Reviewed-by: default avatarBharata B Rao <bharata@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent aa9026fd
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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;
}