From 164e779ce1cd21c0195b60101c7caee5b80f4e88 Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Thu, 27 Jun 2019 21:28:38 -0300 Subject: [PATCH] i386: Get model-id from CPU object on "-cpu help" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: Eduardo Habkost Message-Id: <20190628002844.24894-4-ehabkost@redhat.com> Reviewed-by: Daniel P. Berrangé Signed-off-by: Eduardo Habkost --- target/i386/cpu.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 8852b57c0b..a0e422adf3 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -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 */