> Date: Thu, 28 Mar 2019 09:00:35 -0700
> From: Chris Cappuccio <ch...@nmedia.net>
> 
> 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.

The main problem is that the MSI-X implementation has
machine-depenedent bits that are not implemented on all platforms.

> 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