Since commit 2108c86d0623 ("virtio/pci: Signal INTx interrupts as level instead of edge"), virtio uses level-triggered IRQs. Bring the modern device up to date, by deasserting the IRQ line when the guest reads the interrupt status register. Fixes: 3bf79498e6d5 ("virtio: Add support for modern virtio-pci") Reported-by: Sami Mujawar <sami.mujawar@xxxxxxx> Signed-off-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> --- virtio/pci-modern.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/virtio/pci-modern.c b/virtio/pci-modern.c index 753e95bd..c5b4bc50 100644 --- a/virtio/pci-modern.c +++ b/virtio/pci-modern.c @@ -245,10 +245,7 @@ static bool virtio_pci__isr_read(struct virtio_device *vdev, return false; ioport__write8(data, vpci->isr); - /* - * Interrupts are edge triggered (yes, going against the PCI and virtio - * specs), so no need to deassert the IRQ line. - */ + kvm__irq_line(vpci->kvm, vpci->legacy_irq_line, VIRTIO_IRQ_LOW); vpci->isr = 0; return 0; -- 2.37.1