virtio: Fix dmamap_sync calls
authorsf <sf@openbsd.org>
Thu, 1 Aug 2024 11:13:19 +0000 (11:13 +0000)
committersf <sf@openbsd.org>
Thu, 1 Aug 2024 11:13:19 +0000 (11:13 +0000)
commitd3638ce2770c26ab4458b5a84117bd1a1f8eed12
treee23d2955e53ee6c70789da3b97fda7ace4e7489e
parentdf51ca29b4b1ef381b8280d32815c0c1a93f828b
virtio: Fix dmamap_sync calls

Add some missing bus_dmamap_sync calls, noticed with SEV and based on
an earlier diff by hshoexer@.

Some of the required syncing is done in virtio_check_vq(). Make sure
to use that function instead of calling call the virtqueue done
function directly from device specific drivers.

For viogpu this means that we cannot poll with virtio_dequeue() but
must use virtio_check_vq() instead. To make this more clear, rename
viogpu_vq_wait() into viogpu_vq_done(). While there, set the DRIVER_OK
flag even earlier. It must be set before using any virtqueue.

ok kettenis@
sys/dev/pv/if_vio.c
sys/dev/pv/vioblk.c
sys/dev/pv/viocon.c
sys/dev/pv/viogpu.c
sys/dev/pv/virtio.c