Re: [PATCH 6/8] ppc/xive: Export priority_to_ipb() helper

2021-09-01 Thread David Gibson
On Wed, Sep 01, 2021 at 11:41:51AM +0200, Cédric Le Goater wrote:
> Signed-off-by: Cédric Le Goater 

Applied to ppc-for-6.2.

> ---
>  include/hw/ppc/xive.h | 11 +++
>  hw/intc/xive.c| 21 ++---
>  2 files changed, 17 insertions(+), 15 deletions(-)
> 
> diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
> index db7641165484..29b130eaea59 100644
> --- a/include/hw/ppc/xive.h
> +++ b/include/hw/ppc/xive.h
> @@ -458,6 +458,17 @@ struct XiveENDSource {
>   */
>  #define XIVE_PRIORITY_MAX  7
>  
> +/*
> + * Convert a priority number to an Interrupt Pending Buffer (IPB)
> + * register, which indicates a pending interrupt at the priority
> + * corresponding to the bit number
> + */
> +static inline uint8_t xive_priority_to_ipb(uint8_t priority)
> +{
> +return priority > XIVE_PRIORITY_MAX ?
> +0 : 1 << (XIVE_PRIORITY_MAX - priority);
> +}
> +
>  /*
>   * XIVE Thread Interrupt Management Aera (TIMA)
>   *
> diff --git a/hw/intc/xive.c b/hw/intc/xive.c
> index b817ee8e3704..b0c4f76b1d4b 100644
> --- a/hw/intc/xive.c
> +++ b/hw/intc/xive.c
> @@ -27,17 +27,6 @@
>   * XIVE Thread Interrupt Management context
>   */
>  
> -/*
> - * Convert a priority number to an Interrupt Pending Buffer (IPB)
> - * register, which indicates a pending interrupt at the priority
> - * corresponding to the bit number
> - */
> -static uint8_t priority_to_ipb(uint8_t priority)
> -{
> -return priority > XIVE_PRIORITY_MAX ?
> -0 : 1 << (XIVE_PRIORITY_MAX - priority);
> -}
> -
>  /*
>   * Convert an Interrupt Pending Buffer (IPB) register to a Pending
>   * Interrupt Priority Register (PIPR), which contains the priority of
> @@ -89,7 +78,7 @@ static uint64_t xive_tctx_accept(XiveTCTX *tctx, uint8_t 
> ring)
>  regs[TM_CPPR] = cppr;
>  
>  /* Reset the pending buffer bit */
> -regs[TM_IPB] &= ~priority_to_ipb(cppr);
> +regs[TM_IPB] &= ~xive_priority_to_ipb(cppr);
>  regs[TM_PIPR] = ipb_to_pipr(regs[TM_IPB]);
>  
>  /* Drop Exception bit */
> @@ -353,7 +342,7 @@ static void xive_tm_set_os_cppr(XivePresenter *xptr, 
> XiveTCTX *tctx,
>  static void xive_tm_set_os_pending(XivePresenter *xptr, XiveTCTX *tctx,
> hwaddr offset, uint64_t value, unsigned 
> size)
>  {
> -xive_tctx_ipb_update(tctx, TM_QW1_OS, priority_to_ipb(value & 0xff));
> +xive_tctx_ipb_update(tctx, TM_QW1_OS, xive_priority_to_ipb(value & 
> 0xff));
>  }
>  
>  static void xive_os_cam_decode(uint32_t cam, uint8_t *nvt_blk,
> @@ -1535,7 +1524,8 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t 
> format,
>  /* handle CPU exception delivery */
>  if (count) {
>  trace_xive_presenter_notify(nvt_blk, nvt_idx, match.ring);
> -xive_tctx_ipb_update(match.tctx, match.ring, 
> priority_to_ipb(priority));
> +xive_tctx_ipb_update(match.tctx, match.ring,
> + xive_priority_to_ipb(priority));
>  }
>  
>  return !!count;
> @@ -1682,7 +1672,8 @@ static void xive_router_end_notify(XiveRouter *xrtr, 
> uint8_t end_blk,
>   * use. The presenter will resend the interrupt when the vCPU
>   * is dispatched again on a HW thread.
>   */
> -ipb = xive_get_field32(NVT_W4_IPB, nvt.w4) | 
> priority_to_ipb(priority);
> +ipb = xive_get_field32(NVT_W4_IPB, nvt.w4) |
> +xive_priority_to_ipb(priority);
>  nvt.w4 = xive_set_field32(NVT_W4_IPB, nvt.w4, ipb);
>  xive_router_write_nvt(xrtr, nvt_blk, nvt_idx, , 4);
>  

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


[PATCH 6/8] ppc/xive: Export priority_to_ipb() helper

2021-09-01 Thread Cédric Le Goater
Signed-off-by: Cédric Le Goater 
---
 include/hw/ppc/xive.h | 11 +++
 hw/intc/xive.c| 21 ++---
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index db7641165484..29b130eaea59 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -458,6 +458,17 @@ struct XiveENDSource {
  */
 #define XIVE_PRIORITY_MAX  7
 
+/*
+ * Convert a priority number to an Interrupt Pending Buffer (IPB)
+ * register, which indicates a pending interrupt at the priority
+ * corresponding to the bit number
+ */
+static inline uint8_t xive_priority_to_ipb(uint8_t priority)
+{
+return priority > XIVE_PRIORITY_MAX ?
+0 : 1 << (XIVE_PRIORITY_MAX - priority);
+}
+
 /*
  * XIVE Thread Interrupt Management Aera (TIMA)
  *
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index b817ee8e3704..b0c4f76b1d4b 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -27,17 +27,6 @@
  * XIVE Thread Interrupt Management context
  */
 
-/*
- * Convert a priority number to an Interrupt Pending Buffer (IPB)
- * register, which indicates a pending interrupt at the priority
- * corresponding to the bit number
- */
-static uint8_t priority_to_ipb(uint8_t priority)
-{
-return priority > XIVE_PRIORITY_MAX ?
-0 : 1 << (XIVE_PRIORITY_MAX - priority);
-}
-
 /*
  * Convert an Interrupt Pending Buffer (IPB) register to a Pending
  * Interrupt Priority Register (PIPR), which contains the priority of
@@ -89,7 +78,7 @@ static uint64_t xive_tctx_accept(XiveTCTX *tctx, uint8_t ring)
 regs[TM_CPPR] = cppr;
 
 /* Reset the pending buffer bit */
-regs[TM_IPB] &= ~priority_to_ipb(cppr);
+regs[TM_IPB] &= ~xive_priority_to_ipb(cppr);
 regs[TM_PIPR] = ipb_to_pipr(regs[TM_IPB]);
 
 /* Drop Exception bit */
@@ -353,7 +342,7 @@ static void xive_tm_set_os_cppr(XivePresenter *xptr, 
XiveTCTX *tctx,
 static void xive_tm_set_os_pending(XivePresenter *xptr, XiveTCTX *tctx,
hwaddr offset, uint64_t value, unsigned 
size)
 {
-xive_tctx_ipb_update(tctx, TM_QW1_OS, priority_to_ipb(value & 0xff));
+xive_tctx_ipb_update(tctx, TM_QW1_OS, xive_priority_to_ipb(value & 0xff));
 }
 
 static void xive_os_cam_decode(uint32_t cam, uint8_t *nvt_blk,
@@ -1535,7 +1524,8 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t 
format,
 /* handle CPU exception delivery */
 if (count) {
 trace_xive_presenter_notify(nvt_blk, nvt_idx, match.ring);
-xive_tctx_ipb_update(match.tctx, match.ring, 
priority_to_ipb(priority));
+xive_tctx_ipb_update(match.tctx, match.ring,
+ xive_priority_to_ipb(priority));
 }
 
 return !!count;
@@ -1682,7 +1672,8 @@ static void xive_router_end_notify(XiveRouter *xrtr, 
uint8_t end_blk,
  * use. The presenter will resend the interrupt when the vCPU
  * is dispatched again on a HW thread.
  */
-ipb = xive_get_field32(NVT_W4_IPB, nvt.w4) | priority_to_ipb(priority);
+ipb = xive_get_field32(NVT_W4_IPB, nvt.w4) |
+xive_priority_to_ipb(priority);
 nvt.w4 = xive_set_field32(NVT_W4_IPB, nvt.w4, ipb);
 xive_router_write_nvt(xrtr, nvt_blk, nvt_idx, , 4);
 
-- 
2.31.1