mirror of https://github.com/xemu-project/xemu.git
hw/pci-host/gpex: Implement PCI INTx routing
Now we are able to retrieve the gsi from the INTx pin, let's enable intx_to_irq routing. From that point on, irqfd becomes usable along with INTx when assigning a PCIe device. Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org> Signed-off-by: Tushar Jagad <tushar.jagad@linaro.org> Signed-off-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Andrew Jones <drjones@redhat.com> Tested-by: Feng Kan <fkan@apm.com> Message-id: 1505296004-6798-4-git-send-email-eric.auger@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
c9bb8e1608
commit
d464814ae7
|
@ -53,6 +53,17 @@ int gpex_set_irq_num(GPEXHost *s, int index, int gsi)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static PCIINTxRoute gpex_route_intx_pin_to_irq(void *opaque, int pin)
|
||||
{
|
||||
PCIINTxRoute route;
|
||||
GPEXHost *s = opaque;
|
||||
|
||||
route.mode = PCI_INTX_ENABLED;
|
||||
route.irq = s->irq_num[pin];
|
||||
|
||||
return route;
|
||||
}
|
||||
|
||||
static void gpex_host_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
PCIHostState *pci = PCI_HOST_BRIDGE(dev);
|
||||
|
@ -77,6 +88,7 @@ static void gpex_host_realize(DeviceState *dev, Error **errp)
|
|||
&s->io_ioport, 0, 4, TYPE_PCIE_BUS);
|
||||
|
||||
qdev_set_parent_bus(DEVICE(&s->gpex_root), BUS(pci->bus));
|
||||
pci_bus_set_route_irq_fn(pci->bus, gpex_route_intx_pin_to_irq);
|
||||
qdev_init_nofail(DEVICE(&s->gpex_root));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue