irqchip: gic: Call handle_bad_irq() directly
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 14 Jan 2013 17:53:39 +0000 (17:53 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 26 Mar 2013 16:11:56 +0000 (16:11 +0000)
Previously, the gic_handle_cascade_irq() function was calling the
ARM-specific do_bad_IRQ() function which calls handle_bad_irq() after
acquiring the desk->lock. Locking the cascaded IRQ desc is not needed
for error reporting, so just call handle_bad_irq() directly.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Rob Herring <rob.herring@calxeda.com>
drivers/irqchip/irq-gic.c

index 0b1c0af646de63b10e01711c73deb5751838999e..974f77c887b86d117f93dae0c7a7d199fb5de23e 100644 (file)
@@ -44,7 +44,6 @@
 #include <asm/irq.h>
 #include <asm/exception.h>
 #include <asm/smp_plat.h>
-#include <asm/mach/irq.h>
 
 #include "irqchip.h"
 
@@ -324,7 +323,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 
        cascade_irq = irq_find_mapping(chip_data->domain, gic_irq);
        if (unlikely(gic_irq < 32 || gic_irq > 1020))
-               do_bad_IRQ(cascade_irq, desc);
+               handle_bad_irq(cascade_irq, desc);
        else
                generic_handle_irq(cascade_irq);