Message ID | 156871565600.196432.9246692833113774428.stgit@bahia.lan |
---|---|
State | New |
Headers | show |
Series | Fix usage of error_append_hint() | expand |
On Tue, Sep 17, 2019 at 12:20:56PM +0200, Greg Kurz wrote: > Ensure that hints are added even if errp is &error_fatal or &error_abort. > > Signed-off-by: Greg Kurz <groug@kaod.org> Acked-by: David Gibson <david@gibson.dropbear.id.au> > --- > hw/ppc/mac_newworld.c | 7 +++++-- > hw/ppc/spapr.c | 7 +++++-- > hw/ppc/spapr_pci.c | 9 +++++---- > target/ppc/kvm.c | 13 +++++++++---- > 4 files changed, 24 insertions(+), 12 deletions(-) > > diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c > index c5bbcc743352..aca8c40bf395 100644 > --- a/hw/ppc/mac_newworld.c > +++ b/hw/ppc/mac_newworld.c > @@ -618,8 +618,11 @@ static void core99_set_via_config(Object *obj, const char *value, Error **errp) > } else if (!strcmp(value, "pmu-adb")) { > cms->via_config = CORE99_VIA_CONFIG_PMU_ADB; > } else { > - error_setg(errp, "Invalid via value"); > - error_append_hint(errp, "Valid values are cuda, pmu, pmu-adb.\n"); > + Error *local_err = NULL; > + > + error_setg(&local_err, "Invalid via value"); > + error_append_hint(&local_err, "Valid values are cuda, pmu, pmu-adb.\n"); > + error_propagate(errp, local_err); > } > } > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 08a2a5a77092..39d6f57d014e 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -4337,10 +4337,13 @@ void spapr_set_vcpu_id(PowerPCCPU *cpu, int cpu_index, Error **errp) > vcpu_id = spapr_vcpu_id(spapr, cpu_index); > > if (kvm_enabled() && !kvm_vcpu_id_is_valid(vcpu_id)) { > - error_setg(errp, "Can't create CPU with id %d in KVM", vcpu_id); > - error_append_hint(errp, "Adjust the number of cpus to %d " > + Error *local_err = NULL; > + > + error_setg(&local_err, "Can't create CPU with id %d in KVM", vcpu_id); > + error_append_hint(&local_err, "Adjust the number of cpus to %d " > "or try to raise the number of threads per core\n", > vcpu_id * ms->smp.threads / spapr->vsmt); > + error_propagate(errp, local_err); > return; > } > > diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c > index 7b71ad7c74f1..4b7e9a1c8666 100644 > --- a/hw/ppc/spapr_pci.c > +++ b/hw/ppc/spapr_pci.c > @@ -1870,12 +1870,13 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp) > if (spapr_pci_find_phb(spapr, sphb->buid)) { > SpaprPhbState *s; > > - error_setg(errp, "PCI host bridges must have unique indexes"); > - error_append_hint(errp, "The following indexes are already in use:"); > + error_setg(&local_err, "PCI host bridges must have unique indexes"); > + error_append_hint(&local_err, "The following indexes are already in use:"); > QLIST_FOREACH(s, &spapr->phbs, list) { > - error_append_hint(errp, " %d", s->index); > + error_append_hint(&local_err, " %d", s->index); > } > - error_append_hint(errp, "\nTry another value for the index property\n"); > + error_append_hint(&local_err, "\nTry another value for the index property\n"); > + error_propagate(errp, local_err); > return; > } > > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c > index 8c5b1f25cc95..c6876b08c726 100644 > --- a/target/ppc/kvm.c > +++ b/target/ppc/kvm.c > @@ -242,8 +242,11 @@ static void kvm_get_smmu_info(struct kvm_ppc_smmu_info *info, Error **errp) > assert(kvm_state != NULL); > > if (!kvm_check_extension(kvm_state, KVM_CAP_PPC_GET_SMMU_INFO)) { > - error_setg(errp, "KVM doesn't expose the MMU features it supports"); > - error_append_hint(errp, "Consider switching to a newer KVM\n"); > + Error *local_err = NULL; > + > + error_setg(&local_err, "KVM doesn't expose the MMU features it supports"); > + error_append_hint(&local_err, "Consider switching to a newer KVM\n"); > + error_propagate(errp, local_err); > return; > } > > @@ -2076,6 +2079,7 @@ void kvmppc_hint_smt_possible(Error **errp) > int i; > GString *g; > char *s; > + Error *local_err = NULL; > > assert(kvm_enabled()); > if (cap_ppc_smt_possible) { > @@ -2086,12 +2090,13 @@ void kvmppc_hint_smt_possible(Error **errp) > } > } > s = g_string_free(g, false); > - error_append_hint(errp, "%s.\n", s); > + error_append_hint(&local_err, "%s.\n", s); > g_free(s); > } else { > - error_append_hint(errp, > + error_append_hint(&local_err, > "This KVM seems to be too old to support VSMT.\n"); > } > + error_propagate(errp, local_err); > } > > >
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index c5bbcc743352..aca8c40bf395 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -618,8 +618,11 @@ static void core99_set_via_config(Object *obj, const char *value, Error **errp) } else if (!strcmp(value, "pmu-adb")) { cms->via_config = CORE99_VIA_CONFIG_PMU_ADB; } else { - error_setg(errp, "Invalid via value"); - error_append_hint(errp, "Valid values are cuda, pmu, pmu-adb.\n"); + Error *local_err = NULL; + + error_setg(&local_err, "Invalid via value"); + error_append_hint(&local_err, "Valid values are cuda, pmu, pmu-adb.\n"); + error_propagate(errp, local_err); } } diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 08a2a5a77092..39d6f57d014e 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -4337,10 +4337,13 @@ void spapr_set_vcpu_id(PowerPCCPU *cpu, int cpu_index, Error **errp) vcpu_id = spapr_vcpu_id(spapr, cpu_index); if (kvm_enabled() && !kvm_vcpu_id_is_valid(vcpu_id)) { - error_setg(errp, "Can't create CPU with id %d in KVM", vcpu_id); - error_append_hint(errp, "Adjust the number of cpus to %d " + Error *local_err = NULL; + + error_setg(&local_err, "Can't create CPU with id %d in KVM", vcpu_id); + error_append_hint(&local_err, "Adjust the number of cpus to %d " "or try to raise the number of threads per core\n", vcpu_id * ms->smp.threads / spapr->vsmt); + error_propagate(errp, local_err); return; } diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 7b71ad7c74f1..4b7e9a1c8666 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1870,12 +1870,13 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp) if (spapr_pci_find_phb(spapr, sphb->buid)) { SpaprPhbState *s; - error_setg(errp, "PCI host bridges must have unique indexes"); - error_append_hint(errp, "The following indexes are already in use:"); + error_setg(&local_err, "PCI host bridges must have unique indexes"); + error_append_hint(&local_err, "The following indexes are already in use:"); QLIST_FOREACH(s, &spapr->phbs, list) { - error_append_hint(errp, " %d", s->index); + error_append_hint(&local_err, " %d", s->index); } - error_append_hint(errp, "\nTry another value for the index property\n"); + error_append_hint(&local_err, "\nTry another value for the index property\n"); + error_propagate(errp, local_err); return; } diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 8c5b1f25cc95..c6876b08c726 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -242,8 +242,11 @@ static void kvm_get_smmu_info(struct kvm_ppc_smmu_info *info, Error **errp) assert(kvm_state != NULL); if (!kvm_check_extension(kvm_state, KVM_CAP_PPC_GET_SMMU_INFO)) { - error_setg(errp, "KVM doesn't expose the MMU features it supports"); - error_append_hint(errp, "Consider switching to a newer KVM\n"); + Error *local_err = NULL; + + error_setg(&local_err, "KVM doesn't expose the MMU features it supports"); + error_append_hint(&local_err, "Consider switching to a newer KVM\n"); + error_propagate(errp, local_err); return; } @@ -2076,6 +2079,7 @@ void kvmppc_hint_smt_possible(Error **errp) int i; GString *g; char *s; + Error *local_err = NULL; assert(kvm_enabled()); if (cap_ppc_smt_possible) { @@ -2086,12 +2090,13 @@ void kvmppc_hint_smt_possible(Error **errp) } } s = g_string_free(g, false); - error_append_hint(errp, "%s.\n", s); + error_append_hint(&local_err, "%s.\n", s); g_free(s); } else { - error_append_hint(errp, + error_append_hint(&local_err, "This KVM seems to be too old to support VSMT.\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/ppc/mac_newworld.c | 7 +++++-- hw/ppc/spapr.c | 7 +++++-- hw/ppc/spapr_pci.c | 9 +++++---- target/ppc/kvm.c | 13 +++++++++---- 4 files changed, 24 insertions(+), 12 deletions(-)