diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-01-28 14:45:54 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 18:50:07 -0500 |
commit | 866a8c87c4e51046602387953bbef76992107bcb (patch) | |
tree | f04eb2c39b7d3b44f2d10dc3b8dc0181be2954fc /drivers/pci/msi.c | |
parent | d40f540ce6d992d4123827dbd62f68c4a39c53d0 (diff) |
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/msi.c')
-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) | |||
854 | **/ | 854 | **/ |
855 | void msi_remove_pci_irq_vectors(struct pci_dev* dev) | 855 | void msi_remove_pci_irq_vectors(struct pci_dev* dev) |
856 | { | 856 | { |
857 | int pos; | ||
858 | |||
859 | if (!pci_msi_enable || !dev) | 857 | if (!pci_msi_enable || !dev) |
860 | return; | 858 | return; |
861 | 859 | ||
862 | pos = pci_find_capability(dev, PCI_CAP_ID_MSI); | 860 | if (dev->msi_enabled) { |
863 | if (pos > 0 && dev->msi_enabled) { | ||
864 | if (irq_has_action(dev->first_msi_irq)) { | 861 | if (irq_has_action(dev->first_msi_irq)) { |
865 | printk(KERN_WARNING "PCI: %s: msi_remove_pci_irq_vectors() " | 862 | printk(KERN_WARNING "PCI: %s: msi_remove_pci_irq_vectors() " |
866 | "called without free_irq() on MSI irq %d\n", | 863 | "called without free_irq() on MSI irq %d\n", |
@@ -869,8 +866,7 @@ void msi_remove_pci_irq_vectors(struct pci_dev* dev) | |||
869 | } else /* Release MSI irq assigned to this device */ | 866 | } else /* Release MSI irq assigned to this device */ |
870 | msi_free_irq(dev, dev->first_msi_irq); | 867 | msi_free_irq(dev, dev->first_msi_irq); |
871 | } | 868 | } |
872 | pos = pci_find_capability(dev, PCI_CAP_ID_MSIX); | 869 | if (dev->msix_enabled) { |
873 | if (pos > 0 && dev->msix_enabled) { | ||
874 | int irq, head, tail = 0, warning = 0; | 870 | int irq, head, tail = 0, warning = 0; |
875 | void __iomem *base = NULL; | 871 | void __iomem *base = NULL; |
876 | 872 | ||