@@ -260,7 +260,7 @@ static inline void s390_cpu_unhalt(S390CPU *cpu)
/* cpu_models.c */
void s390_cpu_model_class_register_props(ObjectClass *oc);
-void s390_realize_cpu_model(CPUState *cs, Error **errp);
+bool s390_realize_cpu_model(CPUState *cs, Error **errp);
S390CPUModel *get_max_cpu_model(Error **errp);
void apply_cpu_model(const S390CPUModel *model, Error **errp);
ObjectClass *s390_cpu_class_by_name(const char *name);
@@ -232,8 +232,7 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp)
Error *err = NULL;
/* the model has to be realized before qemu_init_vcpu() due to kvm */
- s390_realize_cpu_model(cs, &err);
- if (err) {
+ if (!s390_realize_cpu_model(cs, &err)) {
goto out;
}
@@ -567,7 +567,7 @@ S390CPUModel *get_max_cpu_model(Error **errp)
return &max_model;
}
-void s390_realize_cpu_model(CPUState *cs, Error **errp)
+bool s390_realize_cpu_model(CPUState *cs, Error **errp)
{
Error *err = NULL;
S390CPUClass *xcc = S390_CPU_GET_CLASS(cs);
@@ -576,19 +576,19 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp)
if (xcc->kvm_required && !kvm_enabled()) {
error_setg(errp, "CPU definition requires KVM");
- return;
+ return false;
}
if (!cpu->model) {
/* no host model support -> perform compatibility stuff */
apply_cpu_model(NULL, errp);
- return;
+ return false;
}
max_model = get_max_cpu_model(errp);
if (!max_model) {
error_prepend(errp, "CPU models are not available: ");
- return;
+ return false;
}
/* copy over properties that can vary */
@@ -601,7 +601,7 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp)
check_compatibility(max_model, cpu->model, &err);
if (err) {
error_propagate(errp, err);
- return;
+ return false;
}
apply_cpu_model(cpu->model, errp);
@@ -617,6 +617,8 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp)
return;
}
#endif
+
+ return true;
}
static void get_feature(Object *obj, Visitor *v, const char *name,
Following the example documented since commit e3fe3988d7 ("error: Document Error API usage rules"), have s390_realize_cpu_model() return a boolean indicating whether an error is set or not. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/s390x/s390x-internal.h | 2 +- target/s390x/cpu.c | 3 +-- target/s390x/cpu_models.c | 12 +++++++----- 3 files changed, 9 insertions(+), 8 deletions(-)