mirror of https://github.com/xemu-project/xemu.git
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);
|
PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < bus->nirq; i++) {
|
|
||||||
bus->irq_count[i] = 0;
|
|
||||||
}
|
|
||||||
for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) {
|
for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) {
|
||||||
if (bus->devices[i]) {
|
if (bus->devices[i]) {
|
||||||
pci_device_reset(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().
|
/* topology traverse is done by pci_bus_reset().
|
||||||
Tell qbus/qdev walker not to traverse the tree */
|
Tell qbus/qdev walker not to traverse the tree */
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue