A PCI bus 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 <pbonz...@redhat.com> --- hw/pci.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index 97a0cd7..ace9368 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -213,14 +213,14 @@ void pci_bus_reset(PCIBus *bus) { 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); + } } static int pcibus_reset(BusState *qbus) -- 1.8.0.2