aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/msi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/msi.c')
-rw-r--r--drivers/pci/msi.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 2a119f8d0dc6..91fed543fc84 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -723,27 +723,21 @@ void msi_remove_pci_irq_vectors(struct pci_dev* dev)
723 msi_free_irq(dev, dev->first_msi_irq); 723 msi_free_irq(dev, dev->first_msi_irq);
724 } 724 }
725 if (dev->msix_enabled) { 725 if (dev->msix_enabled) {
726 int irq, head, tail = 0, warning = 0; 726 int irq, head, tail = 0;
727 void __iomem *base = NULL; 727 void __iomem *base = NULL;
728 728
729 irq = head = dev->first_msi_irq; 729 irq = head = dev->first_msi_irq;
730 while (head != tail) { 730 while (head != tail) {
731 tail = get_irq_msi(irq)->link.tail; 731 tail = get_irq_msi(irq)->link.tail;
732 base = get_irq_msi(irq)->mask_base; 732 base = get_irq_msi(irq)->mask_base;
733 if (irq_has_action(irq)) 733
734 warning = 1; 734 BUG_ON(irq_has_action(irq));
735 else if (irq != head) /* Release MSI-X irq */ 735
736 if (irq != head) /* Release MSI-X irq */
736 msi_free_irq(dev, irq); 737 msi_free_irq(dev, irq);
737 irq = tail; 738 irq = tail;
738 } 739 }
739 msi_free_irq(dev, irq); 740 msi_free_irq(dev, irq);
740 if (warning) {
741 iounmap(base);
742 printk(KERN_WARNING "PCI: %s: msi_remove_pci_irq_vectors() "
743 "called without free_irq() on all MSI-X irqs\n",
744 pci_name(dev));
745 BUG_ON(warning > 0);
746 }
747 } 741 }
748} 742}
749 743