MCA     MCA bus support is enabled.
        MDA     MDA console support is enabled.
        MOUSE   Appropriate mouse support is enabled.
+       MSI     Message Signaled Interrupts (PCI).
        MTD     MTD support is enabled.
        NET     Appropriate network support is enabled.
        NUMA    NUMA support is enabled.
                                Mechanism 2.
                nommconf        [IA-32,X86_64] Disable use of MMCONFIG for PCI
                                Configuration
+               nomsi           [MSI] If the PCI_MSI kernel config parameter is
+                               enabled, this kernel boot option can be used to
+                               disable the use of MSI interrupts system-wide.
                nosort          [IA-32] Don't sort PCI devices according to
                                order given by the PCI BIOS. This sorting is
                                done to get a device order compatible with
 
           generate an interrupt using an inbound Memory Write on its
           PCI bus instead of asserting a device IRQ pin.
 
+          Use of PCI MSI interrupts can be disabled at kernel boot time
+          by using the 'pci=nomsi' option.  This disables MSI for the
+          entire system.
+
           If you don't know what to do here, say N.
 
 config PCI_DEBUG
 
        u16 control;
        unsigned long flags;
 
+       if (!pci_msi_enable)
+               return;
        if (!dev)
                return;
+
        pos = pci_find_capability(dev, PCI_CAP_ID_MSI);
        if (!pos)
                return;
        int pos, temp;
        u16 control;
 
+       if (!pci_msi_enable)
+               return;
        if (!dev)
                return;
 
        }
 }
 
+void pci_no_msi(void)
+{
+       pci_msi_enable = 0;
+}
+
 EXPORT_SYMBOL(pci_enable_msi);
 EXPORT_SYMBOL(pci_disable_msi);
 EXPORT_SYMBOL(pci_enable_msix);
 
                if (k)
                        *k++ = 0;
                if (*str && (str = pcibios_setup(str)) && *str) {
-                       /* PCI layer options should be handled here */
-                       printk(KERN_ERR "PCI: Unknown option `%s'\n", str);
+                       if (!strcmp(str, "nomsi")) {
+                               pci_no_msi();
+                       } else {
+                               printk(KERN_ERR "PCI: Unknown option `%s'\n",
+                                               str);
+                       }
                }
                str = k;
        }
 
 
 #ifdef CONFIG_PCI_MSI
 void disable_msi_mode(struct pci_dev *dev, int pos, int type);
+void pci_no_msi(void);
 #else
 static inline void disable_msi_mode(struct pci_dev *dev, int pos, int type) { }
+static inline void pci_no_msi(void) { }
 #endif
 
 extern int pcie_mch_quirk;