powerpc/pseries: Use irq_has_action() in eeh_disable_irq()
authorMichael Ellerman <michael@ellerman.id.au>
Tue, 13 Oct 2009 19:44:47 +0000 (19:44 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 30 Oct 2009 06:20:54 +0000 (17:20 +1100)
Rather than open-coding our own check, use irq_has_action()
to check if an irq has an action - ie. is "in use".

irq_has_action() doesn't take the descriptor lock, but it
shouldn't matter - we're just using it as an indicator
that the irq is in use. disable_irq_nosync() will take
the descriptor lock before doing anything also.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/pseries/eeh_driver.c

index 0e8db67..ef8e454 100644 (file)
@@ -63,22 +63,6 @@ static void print_device_node_tree(struct pci_dn *pdn, int dent)
 }
 #endif
 
-/** 
- * irq_in_use - return true if this irq is being used 
- */
-static int irq_in_use(unsigned int irq)
-{
-       int rc = 0;
-       unsigned long flags;
-   struct irq_desc *desc = irq_desc + irq;
-
-       spin_lock_irqsave(&desc->lock, flags);
-       if (desc->action)
-               rc = 1;
-       spin_unlock_irqrestore(&desc->lock, flags);
-       return rc;
-}
-
 /**
  * eeh_disable_irq - disable interrupt for the recovering device
  */
@@ -93,7 +77,7 @@ static void eeh_disable_irq(struct pci_dev *dev)
        if (dev->msi_enabled || dev->msix_enabled)
                return;
 
-       if (!irq_in_use(dev->irq))
+       if (!irq_has_action(dev->irq))
                return;
 
        PCI_DN(dn)->eeh_mode |= EEH_MODE_IRQ_DISABLED;