All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kurz <groug@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: gkurz@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, qemu-devel@nongnu.org
Subject: Re: [PATCH 1/4] xics: Eliminate 'reject', 'resend' and 'eoi' class hooks
Date: Tue, 24 Sep 2019 09:28:32 +0200	[thread overview]
Message-ID: <20190924092832.09452db5@bahia.lan> (raw)
In-Reply-To: <20190924045952.11412-2-david@gibson.dropbear.id.au>

On Tue, 24 Sep 2019 14:59:49 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:

> Currently ics_reject(), ics_resend() and ics_eoi() indirect through
> class methods.  But there's only one implementation of each method,
> the one in TYPE_ICS_SIMPLE.  TYPE_ICS_BASE has no implementation, but
> it's never instantiated, and has no other subtypes.
> 
> So clean up by eliminating the method and just having ics_reject(),
> ics_resend() and ics_eoi() contain the logic directly.
> 
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---

Reviewed-by: Greg Kurz <groug@kaod.org>

>  hw/intc/trace-events  |  4 ++--
>  hw/intc/xics.c        | 54 +++++++++++--------------------------------
>  include/hw/ppc/xics.h |  4 ----
>  3 files changed, 15 insertions(+), 47 deletions(-)
> 
> diff --git a/hw/intc/trace-events b/hw/intc/trace-events
> index 719f46b516..fdc716c2cc 100644
> --- a/hw/intc/trace-events
> +++ b/hw/intc/trace-events
> @@ -70,8 +70,8 @@ xics_ics_simple_set_irq_msi(int srcno, int nr) "set_irq_msi: srcno %d [irq 0x%x]
>  xics_masked_pending(void) "set_irq_msi: masked pending"
>  xics_ics_simple_set_irq_lsi(int srcno, int nr) "set_irq_lsi: srcno %d [irq 0x%x]"
>  xics_ics_simple_write_xive(int nr, int srcno, int server, uint8_t priority) "ics_write_xive: irq 0x%x [src %d] server 0x%x prio 0x%x"
> -xics_ics_simple_reject(int nr, int srcno) "reject irq 0x%x [src %d]"
> -xics_ics_simple_eoi(int nr) "ics_eoi: irq 0x%x"
> +xics_ics_reject(int nr, int srcno) "reject irq 0x%x [src %d]"
> +xics_ics_eoi(int nr) "ics_eoi: irq 0x%x"
>  
>  # s390_flic_kvm.c
>  flic_create_device(int err) "flic: create device failed %d"
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index b2fca2975c..93139b0189 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -98,32 +98,8 @@ void ics_pic_print_info(ICSState *ics, Monitor *mon)
>  #define XISR(icp)   (((icp)->xirr) & XISR_MASK)
>  #define CPPR(icp)   (((icp)->xirr) >> 24)
>  
> -static void ics_reject(ICSState *ics, uint32_t nr)
> -{
> -    ICSStateClass *k = ICS_BASE_GET_CLASS(ics);
> -
> -    if (k->reject) {
> -        k->reject(ics, nr);
> -    }
> -}
> -
> -void ics_resend(ICSState *ics)
> -{
> -    ICSStateClass *k = ICS_BASE_GET_CLASS(ics);
> -
> -    if (k->resend) {
> -        k->resend(ics);
> -    }
> -}
> -
> -static void ics_eoi(ICSState *ics, int nr)
> -{
> -    ICSStateClass *k = ICS_BASE_GET_CLASS(ics);
> -
> -    if (k->eoi) {
> -        k->eoi(ics, nr);
> -    }
> -}
> +static void ics_reject(ICSState *ics, uint32_t nr);
> +static void ics_eoi(ICSState *ics, uint32_t nr);
>  
>  static void icp_check_ipi(ICPState *icp)
>  {
> @@ -427,7 +403,7 @@ Object *icp_create(Object *cpu, const char *type, XICSFabric *xi, Error **errp)
>  /*
>   * ICS: Source layer
>   */
> -static void ics_simple_resend_msi(ICSState *ics, int srcno)
> +static void ics_resend_msi(ICSState *ics, int srcno)
>  {
>      ICSIRQState *irq = ics->irqs + srcno;
>  
> @@ -440,7 +416,7 @@ static void ics_simple_resend_msi(ICSState *ics, int srcno)
>      }
>  }
>  
> -static void ics_simple_resend_lsi(ICSState *ics, int srcno)
> +static void ics_resend_lsi(ICSState *ics, int srcno)
>  {
>      ICSIRQState *irq = ics->irqs + srcno;
>  
> @@ -478,7 +454,7 @@ static void ics_simple_set_irq_lsi(ICSState *ics, int srcno, int val)
>      } else {
>          irq->status &= ~XICS_STATUS_ASSERTED;
>      }
> -    ics_simple_resend_lsi(ics, srcno);
> +    ics_resend_lsi(ics, srcno);
>  }
>  
>  void ics_simple_set_irq(void *opaque, int srcno, int val)
> @@ -512,7 +488,7 @@ static void ics_simple_write_xive_msi(ICSState *ics, int srcno)
>  
>  static void ics_simple_write_xive_lsi(ICSState *ics, int srcno)
>  {
> -    ics_simple_resend_lsi(ics, srcno);
> +    ics_resend_lsi(ics, srcno);
>  }
>  
>  void ics_simple_write_xive(ICSState *ics, int srcno, int server,
> @@ -534,11 +510,11 @@ void ics_simple_write_xive(ICSState *ics, int srcno, int server,
>      }
>  }
>  
> -static void ics_simple_reject(ICSState *ics, uint32_t nr)
> +static void ics_reject(ICSState *ics, uint32_t nr)
>  {
>      ICSIRQState *irq = ics->irqs + nr - ics->offset;
>  
> -    trace_xics_ics_simple_reject(nr, nr - ics->offset);
> +    trace_xics_ics_reject(nr, nr - ics->offset);
>      if (irq->flags & XICS_FLAGS_IRQ_MSI) {
>          irq->status |= XICS_STATUS_REJECTED;
>      } else if (irq->flags & XICS_FLAGS_IRQ_LSI) {
> @@ -546,26 +522,26 @@ static void ics_simple_reject(ICSState *ics, uint32_t nr)
>      }
>  }
>  
> -static void ics_simple_resend(ICSState *ics)
> +void ics_resend(ICSState *ics)
>  {
>      int i;
>  
>      for (i = 0; i < ics->nr_irqs; i++) {
>          /* FIXME: filter by server#? */
>          if (ics->irqs[i].flags & XICS_FLAGS_IRQ_LSI) {
> -            ics_simple_resend_lsi(ics, i);
> +            ics_resend_lsi(ics, i);
>          } else {
> -            ics_simple_resend_msi(ics, i);
> +            ics_resend_msi(ics, i);
>          }
>      }
>  }
>  
> -static void ics_simple_eoi(ICSState *ics, uint32_t nr)
> +static void ics_eoi(ICSState *ics, uint32_t nr)
>  {
>      int srcno = nr - ics->offset;
>      ICSIRQState *irq = ics->irqs + srcno;
>  
> -    trace_xics_ics_simple_eoi(nr);
> +    trace_xics_ics_eoi(nr);
>  
>      if (ics->irqs[srcno].flags & XICS_FLAGS_IRQ_LSI) {
>          irq->status &= ~XICS_STATUS_SENT;
> @@ -617,10 +593,6 @@ static void ics_simple_class_init(ObjectClass *klass, void *data)
>                                      &isc->parent_realize);
>      device_class_set_parent_reset(dc, ics_simple_reset,
>                                    &isc->parent_reset);
> -
> -    isc->reject = ics_simple_reject;
> -    isc->resend = ics_simple_resend;
> -    isc->eoi = ics_simple_eoi;
>  }
>  
>  static const TypeInfo ics_simple_info = {
> diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
> index 64a2c8862a..34d7985b7c 100644
> --- a/include/hw/ppc/xics.h
> +++ b/include/hw/ppc/xics.h
> @@ -106,10 +106,6 @@ struct ICSStateClass {
>  
>      DeviceRealize parent_realize;
>      DeviceReset parent_reset;
> -
> -    void (*reject)(ICSState *s, uint32_t irq);
> -    void (*resend)(ICSState *s);
> -    void (*eoi)(ICSState *s, uint32_t irq);
>  };
>  
>  struct ICSState {



  parent reply	other threads:[~2019-09-24  7:30 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-24  4:59 [PATCH 0/4] xics: Eliminate unnecessary class David Gibson
2019-09-24  4:59 ` [PATCH 1/4] xics: Eliminate 'reject', 'resend' and 'eoi' class hooks David Gibson
2019-09-24  5:23   ` Cédric Le Goater
2019-09-24  7:28   ` Greg Kurz [this message]
2019-09-24  4:59 ` [PATCH 2/4] xics: Merge reset and realize hooks David Gibson
2019-09-24  5:26   ` Cédric Le Goater
2019-09-24  7:36   ` Greg Kurz
2019-09-24  9:44   ` Philippe Mathieu-Daudé
2019-09-24 11:40     ` David Gibson
2019-09-24  4:59 ` [PATCH 3/4] xics: Rename misleading ics_simple_*() functions David Gibson
2019-09-24  5:26   ` Cédric Le Goater
2019-09-24  7:38   ` Greg Kurz
2019-09-24  4:59 ` [PATCH 4/4] xics: Merge TYPE_ICS_BASE and TYPE_ICS_SIMPLE classes David Gibson
2019-09-24  5:31   ` Cédric Le Goater
2019-09-24 11:41     ` David Gibson
2019-09-24 14:06       ` Cédric Le Goater
2019-09-25  1:46         ` David Gibson
2019-09-25  6:04           ` Cédric Le Goater
2019-10-03 17:53             ` Cédric Le Goater
2019-09-24  7:40   ` Greg Kurz
2019-09-24  9:46   ` Philippe Mathieu-Daudé
2019-09-24  5:22 ` [PATCH 0/4] xics: Eliminate unnecessary class Cédric Le Goater
2019-09-24  7:52   ` Greg Kurz
2019-09-24  9:55     ` Cédric Le Goater
2019-09-24 10:04       ` Philippe Mathieu-Daudé
2019-09-24 11:00         ` Cédric Le Goater
2019-09-26  1:28           ` David Gibson
2019-09-24  9:47 ` Philippe Mathieu-Daudé
2019-09-24 10:06   ` Greg Kurz
2019-09-24 10:22     ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190924092832.09452db5@bahia.lan \
    --to=groug@kaod.org \
    --cc=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=gkurz@kaod.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.