summary refs log tree commit diff
path: root/drivers/pci
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2007-03-22 21:51:27 +1100
committerGreg Kroah-Hartman <gregkh@suse.de>2007-05-02 19:02:36 -0700
commit54bc6c0b0edd164fc2ea85b3964736c182f6bd5d (patch)
tree958b49ca0af3c6616916bd99fa591e36fb3b7c8c /drivers/pci
parente387b9eefe89a23245f2446f947529cce5d6db35 (diff)
downloadlinux-54bc6c0b0edd164fc2ea85b3964736c182f6bd5d.tar.gz
MSI: Simplify BUG() handling in pci_disable_msix()
Although it might be nice to do a printk before BUG'ing, it's really not
necessary, and it complicates the code.

The behaviour has changed slightly, in that before we set a flag if the irq
had an action, and continued freeing the other irqs. But as I see it that's
all irrelevant because we end up BUG'ing anyway.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/msi.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 9213c57cd968..db452319be90 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -676,7 +676,7 @@ int pci_enable_msix(struct pci_dev* dev, struct msix_entry *entries, int nvec)
 
 void pci_disable_msix(struct pci_dev* dev)
 {
-	int irq, head, tail = 0, warning = 0;
+	int irq, head, tail = 0;
 
 	if (!pci_msi_enable)
 		return;
@@ -693,19 +693,14 @@ void pci_disable_msix(struct pci_dev* dev)
 	irq = head = dev->first_msi_irq;
 	while (head != tail) {
 		tail = get_irq_msi(irq)->link.tail;
-		if (irq_has_action(irq))
-			warning = 1;
-		else if (irq != head)	/* Release MSI-X irq */
+
+		BUG_ON(irq_has_action(irq));
+
+		if (irq != head)	/* Release MSI-X irq */
 			msi_free_irq(dev, irq);
 		irq = tail;
 	}
 	msi_free_irq(dev, irq);
-	if (warning) {
-		printk(KERN_WARNING "PCI: %s: pci_disable_msix() called without "
-			"free_irq() on all MSI-X irqs\n",
-			pci_name(dev));
-		BUG_ON(warning > 0);
-	}
 	dev->first_msi_irq = 0;
 }