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