aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2007-01-28 14:45:54 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2007-02-07 18:50:07 -0500
commit866a8c87c4e51046602387953bbef76992107bcb (patch)
treef04eb2c39b7d3b44f2d10dc3b8dc0181be2954fc /drivers/pci
parentd40f540ce6d992d4123827dbd62f68c4a39c53d0 (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')
-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)
854 **/ 854 **/
855void msi_remove_pci_irq_vectors(struct pci_dev* dev) 855void 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