virtio doesn't try hard enough to get MSI interrupts
virtio_register_msi() doesn't seem to try hard enough with MSI. Specifically, suppose the system supports MSIX, MSI, and FIXED.
virtio_register_msi() will try to register MSIX interrupts. Suppose that fails. Instead of moving onto the next preferred one (MSI), it bails. Then
virtio_register_ints() tries to salvage the situation by calling
virtio_register_intx() to register FIXED interrupts. This seems suboptimal. It should try to get MSI before totally giving up on MSI-type interrupt.