Messages in this thread Patch in this message | | | Date | Sun, 21 May 2006 16:10:25 +0300 | From | "Michael S. Tsirkin" <> | Subject | Re: AMD 8131 MSI quirk called too late, bus_flags not inherited ? |
| |
Quoting r. Brice Goglin <brice@myri.com>: > Subject: Re: AMD 8131 MSI quirk called too late, bus_flags not inherited ? > > Michael S. Tsirkin wrote: > > MSI is an optional feature so things are supposed to work even without MSI - > > are you getting that great a benefit from MSI? > > > > Not great, I would say small.
Me too.
> > All mellanox PCI-X devices have a bridge inside them, so ... > > > > Ok so you really need something for 2.6.17. What about the attached > patch to fix the fact that bus flags are not inherited ? > > Signed-off-by: Brice Goglin <brice@myri.com>
Seems to work for MSI but not for MSI-X. With MSI-X, I still see:
ib_mthca 0000:04:00.0: NOP command failed to generate interrupt (IRQ 217), aborting. ib_mthca 0000:04:00.0: Try again with MSI/MSI-X disabled.
> > Doesn't seem to work for me: > > > > ib_mthca: Initializing 0000:04:00.0 > > GSI 18 sharing vector 0xB9 and IRQ 18 > > ACPI: PCI Interrupt 0000:04:00.0[A] -> GSI 29 (level, low) -> IRQ 185 > > ib_mthca 0000:04:00.0: NOP command failed to generate interrupt (IRQ 217), > > aborting. > > ib_mthca 0000:04:00.0: Try again with MSI/MSI-X disabled. > > ACPI: PCI interrupt for device 0000:04:00.0 disabled > > ib_mthca: probe of 0000:04:00.0 failed with error -16 > > > > Ok. Do you at least see the quirk message ?
Yes.
> Thanks, > Brice > > > Index: linux-mm/drivers/pci/msi.c > =================================================================== > --- linux-mm.orig/drivers/pci/msi.c 2006-05-21 14:25:53.000000000 +0200 > +++ linux-mm/drivers/pci/msi.c 2006-05-21 14:26:56.000000000 +0200 > @@ -916,6 +916,7 @@ > **/ > int pci_enable_msi(struct pci_dev* dev) > { > + struct pci_bus *bus; > int pos, temp, status = -EINVAL; > u16 control; > > @@ -925,8 +926,9 @@ > if (dev->no_msi) > return status; > > - if (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_MSI) > - return -EINVAL; > + for (bus = dev->bus; bus; bus = bus->parent) > + if (bus->bus_flags & PCI_BUS_FLAGS_NO_MSI) > + return -EINVAL; > > temp = dev->irq; > > >
It seems we must add this loop to pci_enable_msix as well.
-- MST - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |