[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v3 09/24] ppc/xics: use the QOM interface to get irqs
From: |
Cédric Le Goater |
Subject: |
[Qemu-ppc] [PATCH v3 09/24] ppc/xics: use the QOM interface to get irqs |
Date: |
Fri, 24 Feb 2017 11:18:08 +0100 |
Signed-off-by: Cédric Le Goater <address@hidden>
---
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 d654f2103cce..fbd76b24f51c 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(XICSFabric *xi, int irq)
{
- ICSState *ics = xics_find_source(xics, irq);
+ XICSFabricClass *xic = XICS_FABRIC_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..24a5758e6243 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_FABRIC(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_FABRIC(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_FABRIC(spapr), source->irq));
}
}
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 3f580a68be8e..701eb3fec94e 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -737,7 +737,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_FABRIC(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..dfa76143f305 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_FABRIC(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..2e9685a5d900 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_FABRIC(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 446c10917291..8a367a27e04d 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -197,7 +197,8 @@ typedef struct XICSFabricClass {
#define XICS_IRQS_SPAPR 1024
-qemu_irq xics_get_qirq(XICSState *icp, int irq);
+qemu_irq xics_get_qirq(XICSFabric *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);
--
2.7.4
- [Qemu-ppc] [PATCH v3 00/24] ppc/xics: simplify ICS and ICP creation, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 01/24] xics: XICS should not be a SysBusDevice, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 02/24] ppc/xics: fix ICP and ICS reset, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 03/24] ppc/xics: remove set_nr_irqs() handler from XICSStateClass, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 04/24] ppc/xics: remove set_nr_servers() handler from XICSStateClass, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 05/24] ppc/xics: store the ICS object under the sPAPR machine, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 06/24] ppc/xics: add an InterruptStatsProvider interface to ICS and ICP objects, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 07/24] ppc/xics: introduce a XICSFabric QOM interface to handle ICSs, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 08/24] ppc/xics: use the QOM interface under the sPAPR machine, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 09/24] ppc/xics: use the QOM interface to get irqs,
Cédric Le Goater <=
- [Qemu-ppc] [PATCH v3 10/24] ppc/xics: use the QOM interface to resend irqs, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 11/24] ppc/xics: remove xics_find_source(), Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 12/24] ppc/xics: register the reset handler of ICS objects, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 13/24] ppc/xics: remove the XICS list of ICS, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 14/24] ppc/xics: extend the QOM interface to handle ICPs, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 15/24] ppc/xics: simplify the cpu_setup() handler, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 16/24] ppc/xics: use the QOM interface to grab an ICP, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 17/24] ppc/xics: simplify spapr_dt_xics() interface, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 18/24] ppc/xics: register the reset handler of ICP objects, Cédric Le Goater, 2017/02/24
- [Qemu-ppc] [PATCH v3 19/24] ppc/xics: move the ICP array under the sPAPR machine, Cédric Le Goater, 2017/02/24