bus. As a result, when the sync is doing very frequently, there may be inconsistencies between the irq_state of the PCI bus and the devices, causing the assertion(L311) failed and the whole system halted.
One possible patch is as follows:
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -520,6 +520,10 @@ static int get_pci_irq_state(QEMUFile *f, void *pv, size_t size,
for (i = 0; i < PCI_NUM_PINS; ++i) {
pci_set_irq_state(s, i, irq_state[i]);
+ if (irq_state[i] != 0){
+ s->bus->set_irq(s->bus->irq_opaque, PCI_NUM_PINS-1-i , 1);
+ s->bus->irq_count[PCI_NUM_PINS-1-i] = 1;
+ }
}
Thanks and regards,
Xusheng Chen