It fails correctly when MSI quirk is enabled. I had the same problems
I just got SATA working on Marvell. After fixing a bunch of issues in the driver, the final issue was lack of interrupts. Disabling CONFIG_PCI_MSI solved that, and suddenly the driver was working quite nicely.
The general problem is that pci_enable_msi() is not failing, on systems that do not support MSI. This leads to Infiniband, tg3, and other drivers working around this problem by including an MSI-interrupts-work test during probe.
Perhaps its because I like leading edge stuff, and am playing with drivers for PCI MSI hardware, but it seems like I am running into this pci_enable_msi()-doesnt-fail problem more and more frequently. First tg3, then AHCI, now sata_mv.
What needs to be done, to detect working PCI message signalled interrupts such that pci_enable_msi() fails properly?