Jan Beulich
2009-Nov-27  10:26 UTC
[Xen-devel] [PATCH] linux/PCI/MSI-X: Don''t disable when it was never enabled
This is the MSI-X counterpart for c/s 945.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
--- sle10sp3-2009-11-27.orig/drivers/pci/msi-xen.c	2009-11-27 09:36:21.000000000
+0100
+++ sle10sp3-2009-11-27/drivers/pci/msi-xen.c	2009-11-27 09:40:40.000000000
+0100
@@ -728,6 +741,7 @@ int pci_enable_msix(struct pci_dev* dev,
 			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++) {
@@ -805,6 +819,11 @@ void pci_disable_msix(struct pci_dev* de
 		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()) {
@@ -822,6 +841,7 @@ void pci_disable_msix(struct pci_dev* de
 		}
 
 		dev->irq = msi_dev_entry->default_irq;
+		dev->msix_enabled = 0;
 		return;
 	}
 #endif
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel