On Fri, Jun 16, 2006 at 11:01:46PM -0400, Brice Goglin wrote:Several chipsets are known to not support MSI. Some support MSI but
disable it by default. Thus, several drivers implement their own way to
detect whether MSI works.
We introduce whitelisting of chipsets that are known to support MSI and
keep the existing backlisting to disable MSI for other chipsets. When it
is unknown whether the root chipset support MSI or not, we disable MSI
by default except if pci=forcemsi was passed.
Whitelisting is done by setting a new PCI_BUS_FLAGS_MSI in the chipset
subordinate bus. pci_enable_msi() thus starts by checking whether the
root chipset of the device has the MSI or NOMSI flag set.
Whitelisting looks all well and good today, and maybe for the rest of
the year. But what about 3 years from now when everyone has shaken all
of the MSI bugs out of their chipsets finally? Do you really want to
add a new quirk for _every_ new chipset that comes out? I don't think
that it is managable over the long run.
I do like your checks to see if MSI is able to be enabled or not, and
maybe we can just invert them to mark those chips that do not support
MSI today?