]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
pciback: disable MSI/MSI-X when resetting device
authorJan Beulich <jbeulich@novell.com>
Thu, 10 Feb 2011 13:59:02 +0000 (13:59 +0000)
committerJan Beulich <jbeulich@novell.com>
Thu, 10 Feb 2011 13:59:02 +0000 (13:59 +0000)
In cases where the guest is abruptly killed and has not disabled
MSI/MSI-X interrupts we want to do that.

Otherwise when the guest is started up and enables MSI, we would
get a WARN() that the device already had been enabled.

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

index b85b2db4e098c9a705160125c12b98a78fa6a2bc..e9ea4f71b7d96ea6df26d32af4af0bfd355a9f08 100644 (file)
@@ -22,6 +22,14 @@ void pciback_reset_device(struct pci_dev *dev)
 
        /* Disable devices (but not bridges) */
        if (dev->hdr_type == PCI_HEADER_TYPE_NORMAL) {
+#ifdef CONFIG_PCI_MSI
+               /* The guest could have been abruptly killed without
+                * disabling MSI/MSI-X interrupts.*/
+               if (dev->msix_enabled)
+                       pci_disable_msix(dev);
+               if (dev->msi_enabled)
+                       pci_disable_msi(dev);
+#endif
                pci_disable_device(dev);
 
                pci_write_config_word(dev, PCI_COMMAND, 0);