MSI: Replace pci_msi_quirk with calls to pci_no_msi()
authorMichael Ellerman <michael@ellerman.id.au>
Thu, 25 Jan 2007 08:34:07 +0000 (19:34 +1100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 7 Feb 2007 23:50:06 +0000 (15:50 -0800)
I don't see any reason why we need pci_msi_quirk, quirk code can just
call pci_no_msi() instead.

Remove the check of pci_msi_quirk in msi_init(). This is safe as all
calls to msi_init() are protected by calls to pci_msi_supported(),
which checks pci_msi_enable, which is disabled by pci_no_msi().

The pci_disable_msi routines didn't check pci_msi_quirk, only
pci_msi_enable, but as far as I can see that was a bug not a feature.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/bnx2.c
drivers/pci/msi.c
drivers/pci/pci.h
drivers/pci/quirks.c

index ee7b75b976b5c60a41dc0ba3e76651cba42b113c..0420697c42939fb1472754759b0497baae322b88 100644 (file)
@@ -5954,8 +5954,7 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
         * responding after a while.
         *
         * AMD believes this incompatibility is unique to the 5706, and
-        * prefers to locally disable MSI rather than globally disabling it
-        * using pci_msi_quirk.
+        * prefers to locally disable MSI rather than globally disabling it.
         */
        if (CHIP_NUM(bp) == CHIP_NUM_5706 && disable_msi == 0) {
                struct pci_dev *amd_8132 = NULL;
index e87e8efb9bb4ac5527167f91c662744d8614ce25..3776531586d105e0b4f4cfc6cda372bea535bc01 100644 (file)
@@ -170,13 +170,6 @@ static int msi_init(void)
        if (!status)
                return status;
 
-       if (pci_msi_quirk) {
-               pci_msi_enable = 0;
-               printk(KERN_WARNING "PCI: MSI quirk detected. MSI disabled.\n");
-               status = -EINVAL;
-               return status;
-       }
-
        status = msi_cache_init();
        if (status < 0) {
                pci_msi_enable = 0;
index 783e81f81f58a849b31dc3003e90b18a35c6936a..4948db0f81005b65279c947df3db08eb5ae74c39 100644 (file)
@@ -43,12 +43,8 @@ extern void pci_remove_legacy_files(struct pci_bus *bus);
 /* Lock for read/write access to pci device and bus lists */
 extern struct rw_semaphore pci_bus_sem;
 
-#ifdef CONFIG_PCI_MSI
-extern int pci_msi_quirk;
-#else
-#define pci_msi_quirk 0
-#endif
 extern unsigned int pci_pm_d3_delay;
+
 #ifdef CONFIG_PCI_MSI
 void disable_msi_mode(struct pci_dev *dev, int pos, int type);
 void pci_no_msi(void);
index d0c359335077ad98cc0974af55ee5a724121890c..0d0ba2fad5fc9960207369557df4453fb8cc0395 100644 (file)
@@ -1700,9 +1700,6 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_NVIDIA,  PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
                        quirk_nvidia_ck804_pcie_aer_ext_cap);
 
 #ifdef CONFIG_PCI_MSI
-/* To disable MSI globally */
-int pci_msi_quirk;
-
 /* The Serverworks PCI-X chipset does not support MSI. We cannot easily rely
  * on setting PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
  * some other busses controlled by the chipset even if Linux is not aware of it.
@@ -1711,8 +1708,8 @@ int pci_msi_quirk;
  */
 static void __init quirk_svw_msi(struct pci_dev *dev)
 {
-       pci_msi_quirk = 1;
-       printk(KERN_WARNING "PCI: MSI quirk detected. pci_msi_quirk set.\n");
+       pci_no_msi();
+       printk(KERN_WARNING "PCI: MSI quirk detected. MSI deactivated.\n");
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_svw_msi);