@@ -127,8 +127,9 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
}
if (!s->m3clk) {
- error_setg(errp, "Invalid m3clk value");
- error_append_hint(errp, "m3clk can not be zero\n");
+ error_setg(&err, "Invalid m3clk value");
+ error_append_hint(&err, "m3clk can not be zero\n");
+ error_propagate(errp, err);
return;
}
@@ -1804,8 +1804,11 @@ static void virt_set_gic_version(Object *obj, const char *value, Error **errp)
} else if (!strcmp(value, "max")) {
vms->gic_version = -1; /* Will probe later */
} else {
- error_setg(errp, "Invalid gic-version value");
- error_append_hint(errp, "Valid values are 3, 2, host, max.\n");
+ Error *err = NULL;
+
+ error_setg(&err, "Invalid gic-version value");
+ error_append_hint(&err, "Valid values are 3, 2, host, max.\n");
+ error_propagate(errp, err);
}
}
@@ -1832,8 +1835,11 @@ static void virt_set_iommu(Object *obj, const char *value, Error **errp)
} else if (!strcmp(value, "none")) {
vms->iommu = VIRT_IOMMU_NONE;
} else {
- error_setg(errp, "Invalid iommu value");
- error_append_hint(errp, "Valid values are none, smmuv3.\n");
+ Error *err = NULL;
+
+ error_setg(&err, "Invalid iommu value");
+ error_append_hint(&err, "Valid values are none, smmuv3.\n");
+ error_propagate(errp, err);
}
}
@@ -810,10 +810,11 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp)
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION);
if (!multiple_redist_region_allowed && s->nb_redist_regions > 1) {
- error_setg(errp, "Multiple VGICv3 redistributor regions are not "
+ error_setg(&local_err, "Multiple VGICv3 redistributor regions are not "
"supported by this host kernel");
- error_append_hint(errp, "A maximum of %d VCPUs can be used",
+ error_append_hint(&local_err, "A maximum of %d VCPUs can be used",
s->redist_region_count[0]);
+ error_propagate(errp, local_err);
return;
}
@@ -128,12 +128,14 @@ static Property msf2_sysreg_properties[] = {
static void msf2_sysreg_realize(DeviceState *dev, Error **errp)
{
MSF2SysregState *s = MSF2_SYSREG(dev);
+ Error *local_err = NULL;
if ((s->apb0div > 32 || !is_power_of_2(s->apb0div))
|| (s->apb1div > 32 || !is_power_of_2(s->apb1div))) {
- error_setg(errp, "Invalid apb divisor value");
- error_append_hint(errp, "apb divisor must be a power of 2"
+ error_setg(&local_err, "Invalid apb divisor value");
+ error_append_hint(&local_err, "apb divisor must be a power of 2"
" and maximum value is 32\n");
+ error_propagate(errp, local_err);
}
}
Ensure that hints are added even if errp is &error_fatal or &error_abort. Signed-off-by: Greg Kurz <groug@kaod.org> --- hw/arm/msf2-soc.c | 5 +++-- hw/arm/virt.c | 14 ++++++++++---- hw/intc/arm_gicv3_kvm.c | 5 +++-- hw/misc/msf2-sysreg.c | 6 ++++-- 4 files changed, 20 insertions(+), 10 deletions(-)