I think the current MSI-X implementation is a minimal skeleton, enough for some devices under virtualization. I don't know if it's enough for NVMe on real hardware.
Jason Tubnor [ja...@tubnor.net] wrote: > Hi, > > Below is a patch that fixes an issue where NVMe storage is presented only > via MSI-X. This issue came about as the NVMe implementation in bhyve only > uses MSI-X. > > Thanks to Chuck Tuffli for the initial patch. It was adjusted to deal with > with both cases. > > Thank, > > Jason Tubnor > > Index: sys/dev/pci/nvme_pci.c > =================================================================== > RCS file: /cvs/src/sys/dev/pci/nvme_pci.c,v > retrieving revision 1.7 > diff -u -p -u -r1.7 nvme_pci.c > --- sys/dev/pci/nvme_pci.c 10 Jan 2018 15:45:46 -0000 1.7 > +++ sys/dev/pci/nvme_pci.c 24 Mar 2019 08:22:42 -0000 > @@ -105,7 +105,7 @@ nvme_pci_attach(struct device *parent, s > return; > } > > - if (pci_intr_map_msi(pa, &ih) != 0) { > + if ((pci_intr_map_msix(pa, 0, &ih) != 0) && (pci_intr_map_msi(pa, &ih) != > 0)) { > if (pci_intr_map(pa, &ih) != 0) { > printf(": unable to map interrupt\n"); > goto unmap;