summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2007-01-28 12:45:54 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2007-02-07 15:50:07 -0800
commit866a8c87c4e51046602387953bbef76992107bcb (patch)
treef04eb2c39b7d3b44f2d10dc3b8dc0181be2954fc /drivers/pci
parentd40f540ce6d992d4123827dbd62f68c4a39c53d0 (diff)
downloadlinux-866a8c87c4e51046602387953bbef76992107bcb.tar.gz
linux-866a8c87c4e51046602387953bbef76992107bcb.tar.bz2
linux-866a8c87c4e51046602387953bbef76992107bcb.zip
msi: Fix msi_remove_pci_irq_vectors.
Since msi_remove_pci_irq_vectors is designed to be called during hotplug remove it is actively wrong to query the hardware and expect meaningful results back. To that end remove the pci_find_capability calls. Testing dev->msi_enabled and dev->msix_enabled gives us all of the information we need. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/msi.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 0df626cf47d8..529113dc3e22 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -854,13 +854,10 @@ void pci_disable_msix(struct pci_dev* dev)
**/
void msi_remove_pci_irq_vectors(struct pci_dev* dev)
{
- int pos;
-
if (!pci_msi_enable || !dev)
return;
- pos = pci_find_capability(dev, PCI_CAP_ID_MSI);
- if (pos > 0 && dev->msi_enabled) {
+ if (dev->msi_enabled) {
if (irq_has_action(dev->first_msi_irq)) {
printk(KERN_WARNING "PCI: %s: msi_remove_pci_irq_vectors() "
"called without free_irq() on MSI irq %d\n",
@@ -869,8 +866,7 @@ void msi_remove_pci_irq_vectors(struct pci_dev* dev)
} else /* Release MSI irq assigned to this device */
msi_free_irq(dev, dev->first_msi_irq);
}
- pos = pci_find_capability(dev, PCI_CAP_ID_MSIX);
- if (pos > 0 && dev->msix_enabled) {
+ if (dev->msix_enabled) {
int irq, head, tail = 0, warning = 0;
void __iomem *base = NULL;