virtio_pci: fix announcement of MSI-X interrupts for queues
Queues that do not need interrupts - for instance, output queues - do not have a corresponding entry in vtpci_msix_vq_interrupts. So, it was wrong to increment a pointer into that array when iterating over such a queue. I ran into this bug while trying to use virtio_console(4) that allocates a lot of queues with every other being an output queue without an interrupt handler (if MultiplePorts feature is negotiated). MFC after: 2 weeks
This commit is contained in:
parent
8be1b98cae
commit
18ec6fbc3a
@ -1087,7 +1087,8 @@ vtpci_set_host_msix_vectors(struct vtpci_softc *sc)
|
||||
* For shared MSIX, all the virtqueues share the first
|
||||
* interrupt.
|
||||
*/
|
||||
if ((sc->vtpci_flags & VTPCI_FLAG_SHARED_MSIX) == 0)
|
||||
if (!sc->vtpci_vqs[idx].vtv_no_intr &&
|
||||
(sc->vtpci_flags & VTPCI_FLAG_SHARED_MSIX) == 0)
|
||||
intr++;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user