Commit 77183755 authored by Cédric Le Goater's avatar Cédric Le Goater Committed by David Gibson
Browse files

spapr: introduce a spapr_qirq() helper



xics_get_qirq() is only used by the sPAPR machine. Let's move it there
and change its name to reflect its scope. It will be useful for XIVE
support which will use its own set of qirqs.

Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent 9e7dc5fc
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -713,18 +713,6 @@ static const TypeInfo xics_fabric_info = {
/*
 * Exported functions
 */
qemu_irq xics_get_qirq(XICSFabric *xi, int irq)
{
    XICSFabricClass *xic = XICS_FABRIC_GET_CLASS(xi);
    ICSState *ics = xic->ics_get(xi, irq);

    if (ics) {
        return ics->qirqs[irq - ics->offset];
    }

    return NULL;
}

ICPState *xics_icp_get(XICSFabric *xi, int server)
{
    XICSFabricClass *xic = XICS_FABRIC_GET_CLASS(xi);
+11 −0
Original line number Diff line number Diff line
@@ -3680,6 +3680,17 @@ void spapr_irq_free(sPAPRMachineState *spapr, int irq, int num)
    }
}

qemu_irq spapr_qirq(sPAPRMachineState *spapr, int irq)
{
    ICSState *ics = spapr->ics;

    if (ics_valid_irq(ics, irq)) {
        return ics->qirqs[irq - ics->offset];
    }

    return NULL;
}

static void spapr_pic_print_info(InterruptStatsProvider *obj,
                                 Monitor *mon)
{
+5 −7
Original line number Diff line number Diff line
@@ -472,9 +472,8 @@ static void spapr_powerdown_req(Notifier *n, void *opaque)

    rtas_event_log_queue(spapr, entry);

    qemu_irq_pulse(xics_get_qirq(XICS_FABRIC(spapr),
                                 rtas_event_log_to_irq(spapr,
                                                       RTAS_LOG_TYPE_EPOW)));
    qemu_irq_pulse(spapr_qirq(spapr,
                   rtas_event_log_to_irq(spapr, RTAS_LOG_TYPE_EPOW)));
}

static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
@@ -556,9 +555,8 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,

    rtas_event_log_queue(spapr, entry);

    qemu_irq_pulse(xics_get_qirq(XICS_FABRIC(spapr),
                                 rtas_event_log_to_irq(spapr,
                                                       RTAS_LOG_TYPE_HOTPLUG)));
    qemu_irq_pulse(spapr_qirq(spapr,
                   rtas_event_log_to_irq(spapr, RTAS_LOG_TYPE_HOTPLUG)));
}

void spapr_hotplug_req_add_by_index(sPAPRDRConnector *drc)
@@ -678,7 +676,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(XICS_FABRIC(spapr), source->irq));
            qemu_irq_pulse(spapr_qirq(spapr, source->irq));
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -723,7 +723,7 @@ static void spapr_msi_write(void *opaque, hwaddr addr,

    trace_spapr_pci_msi_write(addr, data, irq);

    qemu_irq_pulse(xics_get_qirq(XICS_FABRIC(spapr), irq));
    qemu_irq_pulse(spapr_qirq(spapr, irq));
}

static const MemoryRegionOps spapr_msi_ops = {
+1 −1
Original line number Diff line number Diff line
@@ -108,7 +108,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(XICS_FABRIC(spapr), phb->lsi_table[pin].irq);
    return spapr_qirq(spapr, phb->lsi_table[pin].irq);
}

PCIHostState *spapr_create_phb(sPAPRMachineState *spapr, int index);
Loading