diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2007-03-22 21:51:34 +1100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-05-02 19:02:36 -0700 |
commit | 7ede9c1fa50e01a8222217d4606bcbc44cd68f1a (patch) | |
tree | 0884562e9952ebcdad81a27539a3a0046f716a7c /drivers | |
parent | fc4afc7b2bdd81e2dbded5a8222676d3161758d3 (diff) | |
download | op-kernel-dev-7ede9c1fa50e01a8222217d4606bcbc44cd68f1a.zip op-kernel-dev-7ede9c1fa50e01a8222217d4606bcbc44cd68f1a.tar.gz |
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')
-rw-r--r-- | drivers/pci/msi.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 4f326f3..38e4c80 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); |