After poking around I've found that problem is that at least ATI USB-HCDs
apply INTX enable even for MSI, despite warning in the PCI specification that
it should apply only to MSI (actually I have feeling that on these USB devices disabling INTX in MSI mode drives their INTA# line active as when ohci1394 module got loaded kernel complained about interrupt being continuously activated for no good reason (TI's 7421 is one of few MSI-incapable devices
in my box).
So my question is - what is real reason for disabling INTX when in MSI mode?
According to PCI spec it should not be needed, and it hurts at least chips
listed below:
Do not disable INTX in MSI mode. It breaks ATI USB HCDs (both OHCI and EHCI).
Signed-off-by: Petr Vandrovec <petr@xxxxxxxxxxxxxx>
diff -uprdN linux/drivers/pci/msi.c linux/drivers/pci/msi.c
--- linux/drivers/pci/msi.c 2006-12-16 13:34:52.000000000 -0800
+++ linux/drivers/pci/msi.c 2006-12-20 23:18:10.000000000 -0800
@@ -256,7 +256,7 @@ static void enable_msi_mode(struct pci_d
dev->msix_enabled = 1;
}
- pci_intx(dev, 0); /* disable intx */
+ pci_intx(dev, 1); /* enable intx, on some devices it affects MSI as well */
}