AMD 8131 and MSI quirk

From: Roland Dreier
Date: Sat Oct 22 2005 - 17:22:55 EST


The current quirk_amd_8131_ioapic() function sets a global
pci_msi_quirk flag, which disables MSI/MSI-X for all devices in the
system. This is safe but suboptimal, because there may be devices on
other buses not related to the AMD 8131 bridge, for which MSI would
work fine. As an example, see the end of this email for a lspci -t
from a real Opteron system that has PCI-X buses coming from an AMD
8131 and PCI Express buses coming from an Nforce4 bridge -- MSI works
fine for the Mellanox InfiniBand adapter on the PCIe bus, if we allow
it to be enabled.

I guess what we really should be doing is setting the dev->no_msi flag
for all devices below the AMD 8131 PCI-X bridge rather than turning
off MSI globally. Of course this is somewhat tricky, since a device
could be hotplugged onto a bus below the AMD 8131. Greg, any thoughts
about the proper way to use the driver model infrastructure to handle
this?

The other place that pci_msi_quirk is set is quirk_svw_msi(). I don't
know why MSI is turned off for that Serverworks chipset, but perhaps
the same change could be made, and the global pci_msi_quirk flag
killed off entirely.

Thanks,
Roland

-+-[80]-+-00.0 nVidia Corporation CK804 Memory Controller
| +-01.0 nVidia Corporation CK804 Memory Controller
| +-0a.0 nVidia Corporation CK804 Ethernet Controller
| \-0e.0-[81]----00.0 Mellanox Technologies MT25208 InfiniHost III Ex (Tavor compatibility mode)
+-[08]-+-0a.0-[09]--
| +-0a.1 Advanced Micro Devices [AMD] AMD-8131 PCI-X APIC
| +-0b.0-[0a]--+-04.0 Intel Corporation 82546EB Gigabit Ethernet Controller (Copper)
| | +-04.1 Intel Corporation 82546EB Gigabit Ethernet Controller (Copper)
| | \-09.0 Chelsio Communications Inc: Unknown device 000b
| \-0b.1 Advanced Micro Devices [AMD] AMD-8131 PCI-X APIC
\-[00]-+-00.0 nVidia Corporation CK804 Memory Controller
+-01.0 nVidia Corporation CK804 ISA Bridge
+-01.1 nVidia Corporation CK804 SMBus
+-02.0 nVidia Corporation CK804 USB Controller
+-02.1 nVidia Corporation CK804 USB Controller
+-04.0 nVidia Corporation CK804 AC'97 Audio Controller
+-06.0 nVidia Corporation CK804 IDE
+-07.0 nVidia Corporation CK804 Serial ATA Controller
+-08.0 nVidia Corporation CK804 Serial ATA Controller
+-09.0-[01]----05.0 Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
+-0a.0 nVidia Corporation CK804 Ethernet Controller
+-0e.0-[02]--+-00.0 ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]
| \-00.1 ATI Technologies Inc: Unknown device 5b70
+-18.0 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
+-18.1 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
+-18.2 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
+-18.3 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
+-19.0 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
+-19.1 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
+-19.2 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
\-19.3 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/