Commit 164e779c authored by Eduardo Habkost's avatar Eduardo Habkost
Browse files

i386: Get model-id from CPU object on "-cpu help"



When introducing versioned CPU models, the string at
X86CPUDefinition::model_id might not be the model-id we'll really
use.  Instantiate a CPU object and check the model-id property on
"-cpu help"

Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
Message-Id: <20190628002844.24894-4-ehabkost@redhat.com>
Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
parent dac1deae
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -3837,18 +3837,28 @@ static GSList *get_sorted_cpu_model_list(void)
    return list;
}

static char *x86_cpu_class_get_model_id(X86CPUClass *xc)
{
    Object *obj = object_new(object_class_get_name(OBJECT_CLASS(xc)));
    char *r = object_property_get_str(obj, "model-id", &error_abort);
    object_unref(obj);
    return r;
}

static void x86_cpu_list_entry(gpointer data, gpointer user_data)
{
    ObjectClass *oc = data;
    X86CPUClass *cc = X86_CPU_CLASS(oc);
    char *name = x86_cpu_class_get_model_name(cc);
    const char *desc = cc->model_description;
    if (!desc && cc->cpu_def) {
        desc = cc->cpu_def->model_id;
    char *desc = g_strdup(cc->model_description);

    if (!desc) {
        desc = x86_cpu_class_get_model_id(cc);
    }

    qemu_printf("x86 %-20s  %-48s\n", name, desc);
    g_free(name);
    g_free(desc);
}

/* list available CPU models and flags */