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;

Reply via email to