[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 07/22] ppc/xics: use the QOM interface to get
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH v2 07/22] ppc/xics: use the QOM interface to get irqs |
Date: |
Thu, 23 Feb 2017 13:25:22 +1100 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Thu, Feb 16, 2017 at 02:47:30PM +0100, Cédric Le Goater wrote:
> Signed-off-by: Cédric Le Goater <address@hidden>
Reviewed-by: David Gibson <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 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);
--
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
- Re: [Qemu-devel] [PATCH v2 04/22] ppc/xics: add an InterruptStatsProvider interface to ICS and ICP objects, (continued)
[Qemu-devel] [PATCH v2 05/22] ppc/xics: introduce a QOM interface to handle ICSs, Cédric Le Goater, 2017/02/16
[Qemu-devel] [PATCH v2 06/22] ppc/xics: use the QOM interface under the sPAPR machine, Cédric Le Goater, 2017/02/16
[Qemu-devel] [PATCH v2 07/22] ppc/xics: use the QOM interface to get irqs, Cédric Le Goater, 2017/02/16
- Re: [Qemu-devel] [PATCH v2 07/22] ppc/xics: use the QOM interface to get irqs,
David Gibson <=
[Qemu-devel] [PATCH v2 08/22] ppc/xics: use the QOM interface to resend irqs, Cédric Le Goater, 2017/02/16
[Qemu-devel] [PATCH v2 09/22] ppc/xics: remove xics_find_source(), Cédric Le Goater, 2017/02/16