[Nouveau] How to check for proper MSI support?

Bjorn Helgaas bhelgaas at google.com
Sat Jul 5 15:21:49 PDT 2014


On Thu, Jul 3, 2014 at 10:32 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> So let me get this straight -- you're suggesting I add a quirk for
> every PCI chipset that doesn't support MSI? There are probably
> hundreds of these... anything made before 1999 or so, and probably a
> bunch since then too. There _has_ to be a way to do this generically.
> Is the PCI spec version anywhere in the root hub?
>
> Perhaps we can check if every bridge on the way to the CPU has the MSI
> capability (including the root hub)? (And naturally _that_ won't
> work... on my sandybridge laptop, the host bridge doesn't have the MSI
> cap but the system most definitely supports MSI.)
>
> Adding Bjorn... perhaps you know? Some of the info has been stripped
> out by now, you can see the full lspci -vvvxxx at
> http://marc.info/?l=linux-pci&m=140443441730503&w=2

Huh, this stinks.  We don't really have a good way of figuring out
whether the system chipset supports MSI.  The ACPI FADT "MSI Not
Supported" bit (ACPI_FADT_NO_MSI) was added to the ACPI v3.0b spec in
October 2006, so that won't help the systems that predate that or
don't have ACPI.

We have quirks for some Serverworks, ATI, and VIA chipsets that
basically do the same as booting with "pci=nomsi".  But as you say,
it's unreasonable to add quirks for all old systems.

Brian, can you open a report at http://bugzilla.kernel.org and attach
a complete dmesg log, /proc/cpuinfo contents, and "lspci -vvv" output?

If I understand correctly, you have a P200MMX with a 430FX chipset.
I'm not a hardware guy, but sounds like that might be a 200MHz Pentium
with MMX (P54CS), which does have an integrated LAPIC, according to
wikipedia.

>From the PCI host bridge's perspective, an incoming MSI just looks
like a normal DMA write.  As long as that write reaches the CPU LAPIC,
it should work fine.  There's not really any specific MSI support
required, except to route the incoming write to the CPU LAPIC.  So
it's possible that a bridge designed before MSI was added to the PCI
spec might be able to support MSI.

But I don't know how much value there is in MSI on such old systems.
Maybe we could default to disabling MSI on BIOS dates before 1998 or
something.

Bjorn


More information about the Nouveau mailing list