Ensure that hints are added even if errp is &error_fatal or &error_abort.
Signed-off-by: Greg Kurz <gr...@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(-) diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c index 008fd9327aa4..f606cfe7d139 100644 --- a/hw/arm/msf2-soc.c +++ b/hw/arm/msf2-soc.c @@ -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; } diff --git a/hw/arm/virt.c b/hw/arm/virt.c index d74538b0212e..7ac00dab581e 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -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); } } diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c index 9c7f4ab8711c..09784f06f9ad 100644 --- a/hw/intc/arm_gicv3_kvm.c +++ b/hw/intc/arm_gicv3_kvm.c @@ -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; } diff --git a/hw/misc/msf2-sysreg.c b/hw/misc/msf2-sysreg.c index ddc5a30c80f7..23c7890ac022 100644 --- a/hw/misc/msf2-sysreg.c +++ b/hw/misc/msf2-sysreg.c @@ -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); } }