On 07/04/2017 11:35 AM, David Hildenbrand wrote: >> + >> static void create_cpu_model_list(ObjectClass *klass, void *opaque) >> { >> - CpuDefinitionInfoList **cpu_list = opaque; >> + struct CpuDefinitionInfoListData *cpu_list_data = opaque; >> + CpuDefinitionInfoList **cpu_list = &cpu_list_data->list; >> CpuDefinitionInfoList *entry; >> CpuDefinitionInfo *info; >> char *name = g_strdup(object_class_get_name(klass)); >> @@ -300,7 +331,19 @@ static void create_cpu_model_list(ObjectClass *klass, >> void *opaque) >> info->migration_safe = scc->is_migration_safe; >> info->q_static = scc->is_static; >> info->q_typename = g_strdup(object_class_get_name(klass)); >> - > > Wonder if we should add the following: > > /* the host model can never be used under TCG */ > if (scc->kvm_required && !kvm_enabled())) { > info->has_unavailable_features = true; > list_add_feat("type", &info->unavailable_features); > } else if (cpu_list_data->model ... > >> + /* check for unavailable features */ >> + if (cpu_list_data->model) { >> + Object *obj; >> + S390CPU *sc; >> + obj = object_new(object_class_get_name(klass)); >> + sc = S390_CPU(obj); > > So we can drop the check here (if we have a host/max_model definition > under KVM, then all models have sc->model set). But the current code > should also work (it simply will not indicate runability information for > the "host" model under TCG, as sc->model will be NULL). > >> + if (sc->model) { >> + info->has_unavailable_features = true; >> + check_unavailable_features(cpu_list_data->model, sc->model, >> + &info->unavailable_features); >> + } >> + object_unref(obj); >> + } >> > Looks good to me and produced the expected result under TCG. > > Feel free to add my > > Reviewed-by: David Hildenbrand <da...@redhat.com>
Thanks. Viktor I can pick this version or wait for a v4. What do you prefer?