[PATCH 14/14] spapr/xive: Simplify error handling of kvmppc_xive_cpu_synchronize_state()

Greg Kurz posted 14 patches 5 years, 6 months ago
[PATCH 14/14] spapr/xive: Simplify error handling of kvmppc_xive_cpu_synchronize_state()
Posted by Greg Kurz 5 years, 6 months ago
Now that kvmppc_xive_cpu_get_state() returns negative on error, use that
and get rid of the temporary Error object and error_propagate().

Signed-off-by: Greg Kurz <groug@kaod.org>
---
 hw/intc/spapr_xive_kvm.c |   14 ++++++--------
 include/hw/ppc/xive.h    |    2 +-
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c
index e9a36115bed6..d871bb1a0016 100644
--- a/hw/intc/spapr_xive_kvm.c
+++ b/hw/intc/spapr_xive_kvm.c
@@ -119,7 +119,8 @@ int kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp)
 
 typedef struct {
     XiveTCTX *tctx;
-    Error *err;
+    Error **errp;
+    int ret;
 } XiveCpuGetState;
 
 static void kvmppc_xive_cpu_do_synchronize_state(CPUState *cpu,
@@ -127,14 +128,14 @@ static void kvmppc_xive_cpu_do_synchronize_state(CPUState *cpu,
 {
     XiveCpuGetState *s = arg.host_ptr;
 
-    kvmppc_xive_cpu_get_state(s->tctx, &s->err);
+    s->ret = kvmppc_xive_cpu_get_state(s->tctx, s->errp);
 }
 
-void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp)
+int kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp)
 {
     XiveCpuGetState s = {
         .tctx = tctx,
-        .err = NULL,
+        .errp = errp,
     };
 
     /*
@@ -143,10 +144,7 @@ void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp)
     run_on_cpu(tctx->cs, kvmppc_xive_cpu_do_synchronize_state,
                RUN_ON_CPU_HOST_PTR(&s));
 
-    if (s.err) {
-        error_propagate(errp, s.err);
-        return;
-    }
+    return s.ret;
 }
 
 int kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp)
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index 785c905357dc..2c42ae92d287 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -488,7 +488,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);
 int kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp);
-void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp);
+int kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp);
 int kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp);
 int kvmppc_xive_cpu_set_state(XiveTCTX *tctx, Error **errp);
 



Re: [PATCH 14/14] spapr/xive: Simplify error handling of kvmppc_xive_cpu_synchronize_state()
Posted by David Gibson 5 years, 6 months ago
On Mon, Aug 10, 2020 at 06:55:29PM +0200, Greg Kurz wrote:
> Now that kvmppc_xive_cpu_get_state() returns negative on error, use that
> and get rid of the temporary Error object and error_propagate().
> 
> Signed-off-by: Greg Kurz <groug@kaod.org>

Applied to ppc-for-5.2.

> ---
>  hw/intc/spapr_xive_kvm.c |   14 ++++++--------
>  include/hw/ppc/xive.h    |    2 +-
>  2 files changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c
> index e9a36115bed6..d871bb1a0016 100644
> --- a/hw/intc/spapr_xive_kvm.c
> +++ b/hw/intc/spapr_xive_kvm.c
> @@ -119,7 +119,8 @@ int kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp)
>  
>  typedef struct {
>      XiveTCTX *tctx;
> -    Error *err;
> +    Error **errp;
> +    int ret;
>  } XiveCpuGetState;
>  
>  static void kvmppc_xive_cpu_do_synchronize_state(CPUState *cpu,
> @@ -127,14 +128,14 @@ static void kvmppc_xive_cpu_do_synchronize_state(CPUState *cpu,
>  {
>      XiveCpuGetState *s = arg.host_ptr;
>  
> -    kvmppc_xive_cpu_get_state(s->tctx, &s->err);
> +    s->ret = kvmppc_xive_cpu_get_state(s->tctx, s->errp);
>  }
>  
> -void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp)
> +int kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp)
>  {
>      XiveCpuGetState s = {
>          .tctx = tctx,
> -        .err = NULL,
> +        .errp = errp,
>      };
>  
>      /*
> @@ -143,10 +144,7 @@ void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp)
>      run_on_cpu(tctx->cs, kvmppc_xive_cpu_do_synchronize_state,
>                 RUN_ON_CPU_HOST_PTR(&s));
>  
> -    if (s.err) {
> -        error_propagate(errp, s.err);
> -        return;
> -    }
> +    return s.ret;
>  }
>  
>  int kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp)
> diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
> index 785c905357dc..2c42ae92d287 100644
> --- a/include/hw/ppc/xive.h
> +++ b/include/hw/ppc/xive.h
> @@ -488,7 +488,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);
>  int kvmppc_xive_cpu_connect(XiveTCTX *tctx, Error **errp);
> -void kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp);
> +int kvmppc_xive_cpu_synchronize_state(XiveTCTX *tctx, Error **errp);
>  int kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp);
>  int 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