From: Jan Beulich Date: Thu, 10 Feb 2011 13:59:02 +0000 (+0000) Subject: pciback: disable MSI/MSI-X when resetting device X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=89fbf8d0b38798aee398187e04bee4be5225e0b9;p=legacy%2Flinux-2.6.18-xen.git pciback: disable MSI/MSI-X when resetting device 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 --- diff --git a/drivers/xen/pciback/pciback_ops.c b/drivers/xen/pciback/pciback_ops.c index b85b2db4..e9ea4f71 100644 --- a/drivers/xen/pciback/pciback_ops.c +++ b/drivers/xen/pciback/pciback_ops.c @@ -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);