On 9/4/20 3:45 PM, Pan Nengyuan wrote: > 'err' is unnecessary in x86_cpu_class_check_missing_features(), we can change > x86_cpu_expand_features() > to return true on success, false on failure, then pass NULL here to remove it. > > Signed-off-by: Pan Nengyuan <pannengy...@huawei.com> > Suggested-by: Markus Armbruster <arm...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > target/i386/cpu.c | 15 +++++++-------- > 1 file changed, 7 insertions(+), 8 deletions(-) > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > index 49d8958528..c3d3766133 100644 > --- a/target/i386/cpu.c > +++ b/target/i386/cpu.c > @@ -4883,7 +4883,7 @@ static void x86_cpu_parse_featurestr(const char > *typename, char *features, > } > } > > -static void x86_cpu_expand_features(X86CPU *cpu, Error **errp); > +static bool x86_cpu_expand_features(X86CPU *cpu, Error **errp); > static void x86_cpu_filter_features(X86CPU *cpu, bool verbose); > > /* Build a list with the name of all features on a feature word array */ > @@ -4925,7 +4925,6 @@ static void > x86_cpu_class_check_missing_features(X86CPUClass *xcc, > strList **missing_feats) > { > X86CPU *xc; > - Error *err = NULL; > strList **next = missing_feats; > > if (xcc->host_cpuid_required && !accel_uses_host_cpuid()) { > @@ -4937,8 +4936,7 @@ static void > x86_cpu_class_check_missing_features(X86CPUClass *xcc, > > xc = X86_CPU(object_new_with_class(OBJECT_CLASS(xcc))); > > - x86_cpu_expand_features(xc, &err); > - if (err) { > + if (!x86_cpu_expand_features(xc, NULL)) { > /* Errors at x86_cpu_expand_features should never happen, > * but in case it does, just report the model as not > * runnable at all using the "type" property. > @@ -4947,7 +4945,6 @@ static void > x86_cpu_class_check_missing_features(X86CPUClass *xcc, > new->value = g_strdup("type"); > *next = new; > next = &new->next; > - error_free(err); > } > > x86_cpu_filter_features(xc, false); > @@ -6426,7 +6423,7 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu) > /* Expand CPU configuration data, based on configured features > * and host/accelerator capabilities when appropriate. > */ > -static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) > +static bool x86_cpu_expand_features(X86CPU *cpu, Error **errp) > { > CPUX86State *env = &cpu->env; > FeatureWord w; > @@ -6436,14 +6433,14 @@ static void x86_cpu_expand_features(X86CPU *cpu, > Error **errp) > for (l = plus_features; l; l = l->next) { > const char *prop = l->data; > if (!object_property_set_bool(OBJECT(cpu), prop, true, errp)) { > - return; > + return false; > } > } > > for (l = minus_features; l; l = l->next) { > const char *prop = l->data; > if (!object_property_set_bool(OBJECT(cpu), prop, false, errp)) { > - return; > + return false; > } > } > > @@ -6540,6 +6537,8 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error > **errp) > if (env->cpuid_xlevel2 == UINT32_MAX) { > env->cpuid_xlevel2 = env->cpuid_min_xlevel2; > } > + > + return true; > } > > /* >