diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-01-28 12:45:54 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 15:50:07 -0800 |
commit | 866a8c87c4e51046602387953bbef76992107bcb (patch) | |
tree | f04eb2c39b7d3b44f2d10dc3b8dc0181be2954fc /drivers/pci | |
parent | d40f540ce6d992d4123827dbd62f68c4a39c53d0 (diff) | |
download | linux-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.c | 8 |
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; |