Michael Chan wrote:
Some older chipsets/APICs in older PCI machines do not properly support MSI.
In some cases you will get no interrupts and in a few cases you can get
SERR/NMI because the MSI cycle terminates abnormally. The pci_msi_quirk does
not cover all problem chipsets out there. pci_enable_msi() can succeed on
these problem machines.
Most newer PCI Express machines have no problem with MSI, but we have at
least one machine in the lab that doesn't work with MSI.
The interrupt test code is very small and can conclusively determine if MSI
is working on the machine or not. The code can later be used as part of the
ethtool self test. Without the test, we'll have to resort of a parameter or a
config option to disable MSI in tg3.
OK, so this is not a tg3-related problem at all.
It really sounds like you should update pci_msi_quirk() to cover the
other affected cases.
I also disagree that a tg3 config option is needed, if the tg3 MSI test
is not present. An option to globally disable PCI MSI in the kernel is
the preferred approach, if such an option doesn't already exist.