ppc/xics: use the QOM interface to get irqs
Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
7844e12b28
commit
f7759e4331
|
@ -766,9 +766,10 @@ ICSState *xics_find_source(XICSState *xics, int irq)
|
||||||
return NULL;
|
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) {
|
if (ics) {
|
||||||
return ics->qirqs[irq - ics->offset];
|
return ics->qirqs[irq - ics->offset];
|
||||||
|
|
|
@ -481,7 +481,7 @@ static void spapr_powerdown_req(Notifier *n, void *opaque)
|
||||||
|
|
||||||
rtas_event_log_queue(RTAS_LOG_TYPE_EPOW, new_epow, true);
|
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_event_log_to_irq(spapr,
|
||||||
RTAS_LOG_TYPE_EPOW)));
|
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);
|
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_event_log_to_irq(spapr,
|
||||||
RTAS_LOG_TYPE_HOTPLUG)));
|
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);
|
spapr_event_sources_get_source(spapr->event_sources, i);
|
||||||
|
|
||||||
g_assert(source->enabled);
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -737,7 +737,7 @@ static void spapr_msi_write(void *opaque, hwaddr addr,
|
||||||
|
|
||||||
trace_spapr_pci_msi_write(addr, data, irq);
|
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 = {
|
static const MemoryRegionOps spapr_msi_ops = {
|
||||||
|
|
|
@ -106,7 +106,7 @@ static inline qemu_irq spapr_phb_lsi_qirq(struct sPAPRPHBState *phb, int pin)
|
||||||
{
|
{
|
||||||
sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
|
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);
|
PCIHostState *spapr_create_phb(sPAPRMachineState *spapr, int index);
|
||||||
|
|
|
@ -87,7 +87,7 @@ static inline qemu_irq spapr_vio_qirq(VIOsPAPRDevice *dev)
|
||||||
{
|
{
|
||||||
sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
|
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,
|
static inline bool spapr_vio_dma_valid(VIOsPAPRDevice *dev, uint64_t taddr,
|
||||||
|
|
|
@ -198,7 +198,8 @@ typedef struct XICSFabricClass {
|
||||||
|
|
||||||
#define XICS_IRQS_SPAPR 1024
|
#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(ICSState *ics, int irq_hint, bool lsi, Error **errp);
|
||||||
int spapr_ics_alloc_block(ICSState *ics, int num, bool lsi, bool align,
|
int spapr_ics_alloc_block(ICSState *ics, int num, bool lsi, bool align,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
Loading…
Reference in New Issue