virtio: Set DRIVER_OK earlier
authorsf <sf@openbsd.org>
Mon, 29 May 2023 08:13:35 +0000 (08:13 +0000)
committersf <sf@openbsd.org>
Mon, 29 May 2023 08:13:35 +0000 (08:13 +0000)
commitcdd248411fe303b936d5a056fde97097bd7015f0
tree3bd8ecb98ac9dc0cf9b6bda0eab1da0e6a0201e9
parent6ba84b206abd755bfd99fd2988130b228003b88b
virtio: Set DRIVER_OK earlier

The DRIVER_OK bit must be set before using any virt-queues. To allow
virtio device drivers to use the virt-queues in their attach functions,
set the bit there and not in the virtio transport attach function. Only
vioscsi and viogpu really need this, but let's only have one standard
way to do this.

Noticed because of hangs with vioscsi on qemu/windows and in the Oracle
cloud.  With much debugging help by Aaron Mason.

Also revert vioscsi.c 1.31 "Temporarily workaround double calls into
vioscsi_req_done()"

ok krw@
sys/dev/fdt/virtio_mmio.c
sys/dev/pci/virtio_pci.c
sys/dev/pv/if_vio.c
sys/dev/pv/vioblk.c
sys/dev/pv/viocon.c
sys/dev/pv/viogpu.c
sys/dev/pv/viomb.c
sys/dev/pv/viornd.c
sys/dev/pv/vioscsi.c
sys/dev/pv/vmmci.c