On Mon, Aug 10, 2020 at 06:54:05PM +0200, Greg Kurz wrote: > Use error_setg_errno() instead of error_setg(strerror()). While here, > use -ret instead of errno since kvm_vcpu_enable_cap() returns a negative > errno on failure. > > Use ERRP_GUARD() to ensure that errp can be passed to error_append_hint(), > and get rid of the local_err boilerplate. > > Propagate the return value so that callers may use it as well to check > failures. > > Signed-off-by: Greg Kurz <gr...@kaod.org>
Applied to ppc-for-5.2. > --- > hw/intc/spapr_xive_kvm.c | 21 ++++++++++----------- > include/hw/ppc/xive.h | 2 +- > 2 files changed, 11 insertions(+), 12 deletions(-) > > diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c > index 82a6f99f022d..aa1a2f915363 100644 > --- a/hw/intc/spapr_xive_kvm.c > +++ b/hw/intc/spapr_xive_kvm.c > @@ -144,8 +144,9 @@ void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, > Error **errp) > } > } > > -void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp) > +int kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp) > { > + ERRP_GUARD(); > SpaprXive *xive = SPAPR_XIVE(tctx->xptr); > unsigned long vcpu_id; > int ret; > @@ -154,7 +155,7 @@ void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp) > > /* Check if CPU was hot unplugged and replugged. */ > if (kvm_cpu_is_enabled(tctx->cs)) { > - return; > + return 0; > } > > vcpu_id = kvm_arch_vcpu_id(tctx->cs); > @@ -162,20 +163,18 @@ void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error > **errp) > ret = kvm_vcpu_enable_cap(tctx->cs, KVM_CAP_PPC_IRQ_XIVE, 0, xive->fd, > vcpu_id, 0); > if (ret < 0) { > - Error *local_err = NULL; > - > - error_setg(&local_err, > - "XIVE: unable to connect CPU%ld to KVM device: %s", > - vcpu_id, strerror(errno)); > - if (errno == ENOSPC) { > - error_append_hint(&local_err, "Try -smp maxcpus=N with N < %u\n", > + error_setg_errno(errp, -ret, > + "XIVE: unable to connect CPU%ld to KVM device", > + vcpu_id); > + if (ret == -ENOSPC) { > + error_append_hint(errp, "Try -smp maxcpus=N with N < %u\n", > MACHINE(qdev_get_machine())->smp.max_cpus); > } > - error_propagate(errp, local_err); > - return; > + return ret; > } > > kvm_cpu_enable(tctx->cs); > + return 0; > } > > /* > diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h > index 2f3c5af810bb..2d87ed43728a 100644 > --- a/include/hw/ppc/xive.h > +++ b/include/hw/ppc/xive.h > @@ -487,7 +487,7 @@ void xive_tctx_ipb_update(XiveTCTX *tctx, uint8_t ring, > uint8_t ipb); > > int kvmppc_xive_source_reset_one(XiveSource *xsrc, int srcno, Error **errp); > void kvmppc_xive_source_set_irq(void *opaque, int srcno, int val); > -void kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp); > +int kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp); > void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp); > void kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp); > void kvmppc_xive_cpu_set_state(XiveTCTX *tctx, Error **errp); > > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature