]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
xen/PCI/MSI-X: Don't disable when it was never enabled
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 30 Nov 2009 10:37:45 +0000 (10:37 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 30 Nov 2009 10:37:45 +0000 (10:37 +0000)
This is the MSI-X counterpart for c/s 945.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
drivers/pci/msi-xen.c

index 30fcaa94e2b0765a28e4d82a999aaf32caabcfc3..077dc113511b2ecc8a6b92c51fd6f796f3cd2297 100644 (file)
@@ -741,6 +741,7 @@ int pci_enable_msix(struct pci_dev* dev, struct msix_entry *entries, int nvec)
                        printk("get %x from pci_frontend_enable_msix\n", ret);
                        return ret;
                }
+               dev->msix_enabled = 1;
                msi_dev_entry->default_irq = temp;
 
                for (i = 0; i < nvec; i++) {
@@ -818,6 +819,11 @@ void pci_disable_msix(struct pci_dev* dev)
                return;
        if (!dev)
                return;
+       if (!dev->msix_enabled) {
+               printk(KERN_INFO "PCI: %s: Device did not enabled MSI-X.\n",
+                      pci_name(dev));
+               return;
+       }
 
 #ifdef CONFIG_XEN_PCIDEV_FRONTEND
        if (!is_initial_xendomain()) {
@@ -835,6 +841,7 @@ void pci_disable_msix(struct pci_dev* dev)
                }
 
                dev->irq = msi_dev_entry->default_irq;
+               dev->msix_enabled = 0;
                return;
        }
 #endif