qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 05/14] spapr/xive: Rework error handling of kvmppc_xive_cpu_[


From: David Gibson
Subject: Re: [PATCH 05/14] spapr/xive: Rework error handling of kvmppc_xive_cpu_[gs]et_state()
Date: Thu, 13 Aug 2020 20:22:34 +1000

On Mon, Aug 10, 2020 at 06:54:26PM +0200, Greg Kurz wrote:
> kvm_set_one_reg() returns a negative errno on failure, use that instead
> of errno. Also propagate it to callers so they can use it to check
> for failures and hopefully get rid of their local_err boilerplate.
> 
> Signed-off-by: Greg Kurz <groug@kaod.org>

Applied to ppc-for-5.2.

> ---
>  hw/intc/spapr_xive_kvm.c |   15 ++++++++++-----
>  include/hw/ppc/xive.h    |    4 ++--
>  2 files changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c
> index b2a36fd59dae..5e088ccbf885 100644
> --- a/hw/intc/spapr_xive_kvm.c
> +++ b/hw/intc/spapr_xive_kvm.c
> @@ -73,7 +73,7 @@ static void kvm_cpu_disable_all(void)
>   * XIVE Thread Interrupt Management context (KVM)
>   */
>  
> -void kvmppc_xive_cpu_set_state(XiveTCTX *tctx, Error **errp)
> +int kvmppc_xive_cpu_set_state(XiveTCTX *tctx, Error **errp)
>  {
>      SpaprXive *xive = SPAPR_XIVE(tctx->xptr);
>      uint64_t state[2];
> @@ -86,13 +86,16 @@ void kvmppc_xive_cpu_set_state(XiveTCTX *tctx, Error 
> **errp)
>  
>      ret = kvm_set_one_reg(tctx->cs, KVM_REG_PPC_VP_STATE, state);
>      if (ret != 0) {
> -        error_setg_errno(errp, errno,
> +        error_setg_errno(errp, -ret,
>                           "XIVE: could not restore KVM state of CPU %ld",
>                           kvm_arch_vcpu_id(tctx->cs));
> +        return ret;
>      }
> +
> +    return 0;
>  }
>  
> -void kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp)
> +int kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp)
>  {
>      SpaprXive *xive = SPAPR_XIVE(tctx->xptr);
>      uint64_t state[2] = { 0 };
> @@ -102,14 +105,16 @@ void kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error 
> **errp)
>  
>      ret = kvm_get_one_reg(tctx->cs, KVM_REG_PPC_VP_STATE, state);
>      if (ret != 0) {
> -        error_setg_errno(errp, errno,
> +        error_setg_errno(errp, -ret,
>                           "XIVE: could not capture KVM state of CPU %ld",
>                           kvm_arch_vcpu_id(tctx->cs));
> -        return;
> +        return ret;
>      }
>  
>      /* word0 and word1 of the OS ring. */
>      *((uint64_t *) &tctx->regs[TM_QW1_OS]) = state[0];
> +
> +    return 0;
>  }
>  
>  typedef struct {
> diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
> index 2d87ed43728a..785c905357dc 100644
> --- a/include/hw/ppc/xive.h
> +++ b/include/hw/ppc/xive.h
> @@ -489,7 +489,7 @@ 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);
> -void kvmppc_xive_cpu_get_state(XiveTCTX *tctx, Error **errp);
> -void kvmppc_xive_cpu_set_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);
>  
>  #endif /* PPC_XIVE_H */
> 
> 

-- 
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

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]