diff mbox

[v2,07/22] ppc/xics: use the QOM interface to get irqs

Message ID 1487252865-12064-8-git-send-email-clg@kaod.org
State New
Headers show

Commit Message

Cédric Le Goater Feb. 16, 2017, 1:47 p.m. UTC
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 hw/intc/xics.c              | 5 +++--
 hw/ppc/spapr_events.c       | 6 +++---
 hw/ppc/spapr_pci.c          | 2 +-
 include/hw/pci-host/spapr.h | 2 +-
 include/hw/ppc/spapr_vio.h  | 2 +-
 include/hw/ppc/xics.h       | 3 ++-
 6 files changed, 11 insertions(+), 9 deletions(-)

Comments

David Gibson Feb. 23, 2017, 2:25 a.m. UTC | #1
On Thu, Feb 16, 2017 at 02:47:30PM +0100, Cédric Le Goater wrote:
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/intc/xics.c              | 5 +++--
>  hw/ppc/spapr_events.c       | 6 +++---
>  hw/ppc/spapr_pci.c          | 2 +-
>  include/hw/pci-host/spapr.h | 2 +-
>  include/hw/ppc/spapr_vio.h  | 2 +-
>  include/hw/ppc/xics.h       | 3 ++-
>  6 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index 39c442f70116..0ffdf09c5304 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -747,9 +747,10 @@ ICSState *xics_find_source(XICSState *xics, int irq)
>      return NULL;
>  }
>  
> -qemu_irq xics_get_qirq(XICSState *xics, int irq)
> +qemu_irq xics_get_qirq(XICSInterface *xi, int irq)
>  {
> -    ICSState *ics = xics_find_source(xics, irq);
> +    XICSInterfaceClass *xic = XICS_INTERFACE_GET_CLASS(xi);
> +    ICSState *ics = xic->ics_get(xi, irq);
>  
>      if (ics) {
>          return ics->qirqs[irq - ics->offset];
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index 38b4258a9be7..aa627dc13008 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -481,7 +481,7 @@ static void spapr_powerdown_req(Notifier *n, void *opaque)
>  
>      rtas_event_log_queue(RTAS_LOG_TYPE_EPOW, new_epow, true);
>  
> -    qemu_irq_pulse(xics_get_qirq(spapr->xics,
> +    qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr),
>                                   rtas_event_log_to_irq(spapr,
>                                                         RTAS_LOG_TYPE_EPOW)));
>  }
> @@ -574,7 +574,7 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
>  
>      rtas_event_log_queue(RTAS_LOG_TYPE_HOTPLUG, new_hp, true);
>  
> -    qemu_irq_pulse(xics_get_qirq(spapr->xics,
> +    qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr),
>                                   rtas_event_log_to_irq(spapr,
>                                                         RTAS_LOG_TYPE_HOTPLUG)));
>  }
> @@ -695,7 +695,7 @@ static void check_exception(PowerPCCPU *cpu, sPAPRMachineState *spapr,
>                  spapr_event_sources_get_source(spapr->event_sources, i);
>  
>              g_assert(source->enabled);
> -            qemu_irq_pulse(xics_get_qirq(spapr->xics, source->irq));
> +            qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr), source->irq));
>          }
>      }
>  
> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> index 01d5c92425ed..e52d6e993c9e 100644
> --- a/hw/ppc/spapr_pci.c
> +++ b/hw/ppc/spapr_pci.c
> @@ -736,7 +736,7 @@ static void spapr_msi_write(void *opaque, hwaddr addr,
>  
>      trace_spapr_pci_msi_write(addr, data, irq);
>  
> -    qemu_irq_pulse(xics_get_qirq(spapr->xics, irq));
> +    qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr), irq));
>  }
>  
>  static const MemoryRegionOps spapr_msi_ops = {
> diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
> index 092294ed5a65..bfd307be30ca 100644
> --- a/include/hw/pci-host/spapr.h
> +++ b/include/hw/pci-host/spapr.h
> @@ -106,7 +106,7 @@ static inline qemu_irq spapr_phb_lsi_qirq(struct sPAPRPHBState *phb, int pin)
>  {
>      sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
>  
> -    return xics_get_qirq(spapr->xics, phb->lsi_table[pin].irq);
> +    return xics_get_qirq(XICS_INTERFACE(spapr), phb->lsi_table[pin].irq);
>  }
>  
>  PCIHostState *spapr_create_phb(sPAPRMachineState *spapr, int index);
> diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h
> index fc6f673ea086..1b04523b683d 100644
> --- a/include/hw/ppc/spapr_vio.h
> +++ b/include/hw/ppc/spapr_vio.h
> @@ -87,7 +87,7 @@ static inline qemu_irq spapr_vio_qirq(VIOsPAPRDevice *dev)
>  {
>      sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
>  
> -    return xics_get_qirq(spapr->xics, dev->irq);
> +    return xics_get_qirq(XICS_INTERFACE(spapr), dev->irq);
>  }
>  
>  static inline bool spapr_vio_dma_valid(VIOsPAPRDevice *dev, uint64_t taddr,
> diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
> index 640603b3d76d..896fa5d87c1c 100644
> --- a/include/hw/ppc/xics.h
> +++ b/include/hw/ppc/xics.h
> @@ -197,7 +197,8 @@ typedef struct XICSInterfaceClass {
>  
>  #define XICS_IRQS_SPAPR               1024
>  
> -qemu_irq xics_get_qirq(XICSState *icp, int irq);
> +qemu_irq xics_get_qirq(XICSInterface *xi, int irq);
> +
>  int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi, Error **errp);
>  int spapr_ics_alloc_block(ICSState *ics, int num, bool lsi, bool align,
>                             Error **errp);
diff mbox

Patch

diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index 39c442f70116..0ffdf09c5304 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -747,9 +747,10 @@  ICSState *xics_find_source(XICSState *xics, int irq)
     return NULL;
 }
 
-qemu_irq xics_get_qirq(XICSState *xics, int irq)
+qemu_irq xics_get_qirq(XICSInterface *xi, int irq)
 {
-    ICSState *ics = xics_find_source(xics, irq);
+    XICSInterfaceClass *xic = XICS_INTERFACE_GET_CLASS(xi);
+    ICSState *ics = xic->ics_get(xi, irq);
 
     if (ics) {
         return ics->qirqs[irq - ics->offset];
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index 38b4258a9be7..aa627dc13008 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -481,7 +481,7 @@  static void spapr_powerdown_req(Notifier *n, void *opaque)
 
     rtas_event_log_queue(RTAS_LOG_TYPE_EPOW, new_epow, true);
 
-    qemu_irq_pulse(xics_get_qirq(spapr->xics,
+    qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr),
                                  rtas_event_log_to_irq(spapr,
                                                        RTAS_LOG_TYPE_EPOW)));
 }
@@ -574,7 +574,7 @@  static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
 
     rtas_event_log_queue(RTAS_LOG_TYPE_HOTPLUG, new_hp, true);
 
-    qemu_irq_pulse(xics_get_qirq(spapr->xics,
+    qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr),
                                  rtas_event_log_to_irq(spapr,
                                                        RTAS_LOG_TYPE_HOTPLUG)));
 }
@@ -695,7 +695,7 @@  static void check_exception(PowerPCCPU *cpu, sPAPRMachineState *spapr,
                 spapr_event_sources_get_source(spapr->event_sources, i);
 
             g_assert(source->enabled);
-            qemu_irq_pulse(xics_get_qirq(spapr->xics, source->irq));
+            qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr), source->irq));
         }
     }
 
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 01d5c92425ed..e52d6e993c9e 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -736,7 +736,7 @@  static void spapr_msi_write(void *opaque, hwaddr addr,
 
     trace_spapr_pci_msi_write(addr, data, irq);
 
-    qemu_irq_pulse(xics_get_qirq(spapr->xics, irq));
+    qemu_irq_pulse(xics_get_qirq(XICS_INTERFACE(spapr), irq));
 }
 
 static const MemoryRegionOps spapr_msi_ops = {
diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
index 092294ed5a65..bfd307be30ca 100644
--- a/include/hw/pci-host/spapr.h
+++ b/include/hw/pci-host/spapr.h
@@ -106,7 +106,7 @@  static inline qemu_irq spapr_phb_lsi_qirq(struct sPAPRPHBState *phb, int pin)
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
 
-    return xics_get_qirq(spapr->xics, phb->lsi_table[pin].irq);
+    return xics_get_qirq(XICS_INTERFACE(spapr), phb->lsi_table[pin].irq);
 }
 
 PCIHostState *spapr_create_phb(sPAPRMachineState *spapr, int index);
diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h
index fc6f673ea086..1b04523b683d 100644
--- a/include/hw/ppc/spapr_vio.h
+++ b/include/hw/ppc/spapr_vio.h
@@ -87,7 +87,7 @@  static inline qemu_irq spapr_vio_qirq(VIOsPAPRDevice *dev)
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
 
-    return xics_get_qirq(spapr->xics, dev->irq);
+    return xics_get_qirq(XICS_INTERFACE(spapr), dev->irq);
 }
 
 static inline bool spapr_vio_dma_valid(VIOsPAPRDevice *dev, uint64_t taddr,
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index 640603b3d76d..896fa5d87c1c 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -197,7 +197,8 @@  typedef struct XICSInterfaceClass {
 
 #define XICS_IRQS_SPAPR               1024
 
-qemu_irq xics_get_qirq(XICSState *icp, int irq);
+qemu_irq xics_get_qirq(XICSInterface *xi, int irq);
+
 int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi, Error **errp);
 int spapr_ics_alloc_block(ICSState *ics, int num, bool lsi, bool align,
                            Error **errp);