pci: clean up resetting of IRQs
pci_device_reset will deassert the INTX pins, and this will make the irq_count array all-zeroes. Check that this is the case, and remove the existing loop which might even unsync irq_count and irq_state. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
81e3e75b64
commit
9bdbbfc3a0
@ -217,15 +217,16 @@ static int pcibus_reset(BusState *qbus)
|
||||
PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < bus->nirq; i++) {
|
||||
bus->irq_count[i] = 0;
|
||||
}
|
||||
for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) {
|
||||
if (bus->devices[i]) {
|
||||
pci_device_reset(bus->devices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < bus->nirq; i++) {
|
||||
assert(bus->irq_count[i] == 0);
|
||||
}
|
||||
|
||||
/* topology traverse is done by pci_bus_reset().
|
||||
Tell qbus/qdev walker not to traverse the tree */
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user