PCI MSI: always toggle legacy-INTx-enable bit upon MSI entry/exit
authorJeff Garzik <jeff@garzik.org>
Thu, 7 Dec 2006 22:56:06 +0000 (17:56 -0500)
committerJeff Garzik <jeff@garzik.org>
Thu, 7 Dec 2006 22:56:06 +0000 (17:56 -0500)
The current code (prior to this change) would disable the PCI INTx
legacy interrupt when enabling MSI... but only on PCI Express.  We
should do this for all MSI devices, for safety's sake.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/pci/msi.c

index 9fc9a34ef24a28e74ec07ca725eb0c6db91f29ac..c2828a37c2f79fbc07f51107a285330514e6be39 100644 (file)
@@ -255,10 +255,8 @@ static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
                pci_write_config_word(dev, msi_control_reg(pos), control);
                dev->msix_enabled = 1;
        }
-       if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
-               /* PCI Express Endpoint device detected */
-               pci_intx(dev, 0);  /* disable intx */
-       }
+
+       pci_intx(dev, 0);  /* disable intx */
 }
 
 void disable_msi_mode(struct pci_dev *dev, int pos, int type)
@@ -276,10 +274,8 @@ void disable_msi_mode(struct pci_dev *dev, int pos, int type)
                pci_write_config_word(dev, msi_control_reg(pos), control);
                dev->msix_enabled = 0;
        }
-       if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
-               /* PCI Express Endpoint device detected */
-               pci_intx(dev, 1);  /* enable intx */
-       }
+
+       pci_intx(dev, 1);  /* enable intx */
 }
 
 static int msi_lookup_irq(struct pci_dev *dev, int type)