cvs commit: src/sys/dev/pci pci_pci.c

Andrew Gallatin gallatin at cs.duke.edu
Thu May 24 01:28:53 UTC 2007


John Baldwin writes:
 > On Wednesday 23 May 2007 03:00:30 pm Andrew Gallatin wrote:
 > > 
 > > Rui Paulo writes:
 > >  > At Wed, 23 May 2007 15:31:01 +0000 (UTC),
 > >  > Andrew Gallatin wrote:
 > >  > > 
 > >  > > gallatin    2007-05-23 15:31:01 UTC
 > >  > > 
 > >  > >   FreeBSD src repository
 > >  > > 
 > >  > >   Modified files:
 > >  > >     sys/dev/pci          pci_pci.c 
 > >  > >   Log:
 > >  > >   Fix a typo in pcib_alloc_msi{x} which resulted in the
 > >  > >   device's, not the bridge's, softc to be used to check the
 > >  > >   PCIB_DISABLE_MSI flag.  This resulted in randomly allowing
 > >  > >   or denying MSI interrupts based on whatever value the driver
 > >  > >   happened to store at sizeof(device_t) bytes into its softc.
 > >  > >   
 > >  > >   I noticed this when I stopped getting MSI interrupts
 > >  > >   after slighly re-arranging mxge's softc yesterday.
 > >  > 
 > >  > Wow, I'll have to try this out on msk(4)..
 > > 
 > > To be clear, pci_alloc_msi() was failing, so MSI was not
 > > used at all.  It didn't affect the actual generation
 > > of interrupts once MSI is enabled..
 > 
 > In some cases it gave you MSI when it shouldn't have, too.  I do have at least 
 > one bug report on msk(4) that this might fix, as since it was checking the 
 > wrong softc, it could break on any system, not just ones with the broken 
 > bridges.

Indeed. In fact, mxge would always get MSI, even on blacklisted
bridges before I changed the layout of the softc..  Then it would
never get MSI, and I lost ~1Gb/s when my 10GbE NIC was sharing an IRQ
with USB, and I went bug hunting.

The temporary lack of MSI made me appreciate all your hard work in adding
support for it even more :)

Drew


More information about the cvs-src mailing list