summaryrefslogtreecommitdiffstats
path: root/drivers/pci/msi.c
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2007-03-22 11:51:34 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2007-05-03 04:02:36 +0200
commit7ede9c1fa50e01a8222217d4606bcbc44cd68f1a (patch)
tree0884562e9952ebcdad81a27539a3a0046f716a7c /drivers/pci/msi.c
parentMSI: Consolidate MSI-X irq freeing code (diff)
downloadlinux-7ede9c1fa50e01a8222217d4606bcbc44cd68f1a.tar.xz
linux-7ede9c1fa50e01a8222217d4606bcbc44cd68f1a.zip
MSI: Consolidate BUG_ON()s.
When freeing MSIs and MSI-Xs, we BUG_ON() if the irq has not been freed, ie. if it still has an action. We can consolidate all of these BUG_ON()s into msi_free_irqs() as all the code paths lead there almost immediately 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/msi.c')
-rw-r--r--drivers/pci/msi.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 4f326f38f9bf..38e4c807f80f 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -573,8 +573,6 @@ void pci_disable_msi(struct pci_dev* dev)
return;
}
- BUG_ON(irq_has_action(dev->first_msi_irq));
-
default_irq = entry->msi_attrib.default_irq;
msi_free_irq(dev, dev->first_msi_irq);
@@ -590,6 +588,8 @@ static int msi_free_irq(struct pci_dev* dev, int irq)
int head, entry_nr, type;
void __iomem *base;
+ BUG_ON(irq_has_action(irq));
+
entry = get_irq_msi(irq);
if (!entry || entry->dev != dev) {
return -EINVAL;
@@ -682,8 +682,6 @@ static void msix_free_all_irqs(struct pci_dev *dev)
while (head != tail) {
tail = get_irq_msi(irq)->link.tail;
- BUG_ON(irq_has_action(irq));
-
if (irq != head)
msi_free_irq(dev, irq);
irq = tail;
@@ -723,10 +721,8 @@ void msi_remove_pci_irq_vectors(struct pci_dev* dev)
if (!pci_msi_enable || !dev)
return;
- if (dev->msi_enabled) {
- BUG_ON(irq_has_action(dev->first_msi_irq));
+ if (dev->msi_enabled)
msi_free_irq(dev, dev->first_msi_irq);
- }
if (dev->msix_enabled)
msix_free_all_irqs(dev);