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.
Updated by Joshua M. Clulow 9 months ago
- Status changed from New to Rejected
- Tags deleted (
I reworked the interrupt allocation behaviour in #11329, so I don't think this applies any longer. Note that although the original code needed improvement, the omission of MSI interrupts is actually (it seems) on account the Virtio specification; it specifies a way to use MSI-X but not MSI interrupt vectors.