The per-VQ MSI-X interrupt handler needs to sync DMA mappings in the
authorpatrick <patrick@openbsd.org>
Fri, 7 Jul 2023 10:23:39 +0000 (10:23 +0000)
committerpatrick <patrick@openbsd.org>
Fri, 7 Jul 2023 10:23:39 +0000 (10:23 +0000)
commit6c89734d1e67558b2a8a278059fa173c7c95a125
tree1896faab0238342836ace19543f7684a667a3ae8
parente609121df8ff0ae71a679d789a9accc03602b15b
The per-VQ MSI-X interrupt handler needs to sync DMA mappings in the
same way that the shared interrupt handler does.  This is one of the
requirements of virtio_dequeue(), as specified in its comment above.

Without the DMA sync, it will not see a new entry on the ring and
return.  Since the interrupt is edge-triggered there won't be another
one and we'll get stuck.

ok dv@
sys/dev/pci/virtio_pci.c
sys/dev/pv/virtio.c
sys/dev/pv/virtiovar.h