Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aec00956 authored by Catalin Marinas's avatar Catalin Marinas
Browse files

irqchip: gic: Call handle_bad_irq() directly



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: default avatarCatalin Marinas <catalin.marinas@arm.com>
Tested-by: default avatarMarc 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>
parent de88cbb7
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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);