hw/pci-host/gpex: Improve INTX to gsi routing error checking
We exposed gpex_set_irq_num() for machines to set the INTx to GSI routing. However if the machine forgets to call that function we currently do not check the association was properly done. Let's initialize gsi values to -1 and if this value is found in gpex_route_intx_pin_to_irq, set the routing mode as disabled. Signed-off-by: Eric Auger <eric.auger@redhat.com> Message-id: 1508776211-22175-1-git-send-email-eric.auger@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
db7b98c6bb
commit
168df2dea7
|
@ -57,9 +57,14 @@ static PCIINTxRoute gpex_route_intx_pin_to_irq(void *opaque, int pin)
|
|||
{
|
||||
PCIINTxRoute route;
|
||||
GPEXHost *s = opaque;
|
||||
int gsi = s->irq_num[pin];
|
||||
|
||||
route.mode = PCI_INTX_ENABLED;
|
||||
route.irq = s->irq_num[pin];
|
||||
route.irq = gsi;
|
||||
if (gsi < 0) {
|
||||
route.mode = PCI_INTX_DISABLED;
|
||||
} else {
|
||||
route.mode = PCI_INTX_ENABLED;
|
||||
}
|
||||
|
||||
return route;
|
||||
}
|
||||
|
@ -81,6 +86,7 @@ static void gpex_host_realize(DeviceState *dev, Error **errp)
|
|||
sysbus_init_mmio(sbd, &s->io_ioport);
|
||||
for (i = 0; i < GPEX_NUM_IRQS; i++) {
|
||||
sysbus_init_irq(sbd, &s->irq[i]);
|
||||
s->irq_num[i] = -1;
|
||||
}
|
||||
|
||||
pci->bus = pci_register_bus(dev, "pcie.0", gpex_set_irq,
|
||||
|
|
Loading…
Reference in a new issue