linux/arch/arm/mach-ns9xxx
Thomas Gleixner 6829310548 arm: Ns9xxx: Remove private irq flow handler
handle_prio_irq is almost identical with handle_fasteoi_irq. The
subtle differences are

1) The handler checks for IRQ_DISABLED after the device handler has
   been called. In case it's set it masks the interrupt.

2) When the handler sees IRQ_DISABLED on entry it masks the interupt
   in the same way as handle_fastoei_irq, but does not set the
   IRQ_PENDING flag.

3) Instead of gracefully handling a recursive interrupt it crashes the
   kernel.

#1 is just relevant when a device handler calls disable_irq_nosync()
   and it does not matter whether we mask the interrupt right away or
   not. We handle lazy masking for disable_irq anyway, so there is no
   real reason to have this extra mask in place.

#2 will prevent the resend of a pending interrupt, which can result in
   lost interrupts for edge type interrupts. For level type interrupts
   the resend is a noop in the generic code. According to the
   datasheet all interrupts are level type, so marking them as such
   will result in the exact same behaviour as the private
   handle_prio_irq implementation.

#3 is just stupid. Crashing the kernel instead of handling a problem
   gracefully is just wrong. With the current semantics- all handlers
   run with interrupts disabled - this is even more wrong.

Rename ack to eoi, remove the unused mask_ack, switch to
handle_fasteoi_irq and remove the private function.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Acked-by: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
Cc: linux-arm-kernel@lists.infradead.org
LKML-Reference: <20110202212552.299898447@linutronix.de>
2011-03-28 16:55:11 +02:00
..
include/mach ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
board-a9m9750dev.c ARM: ns9xxx: irq_data conversion. 2011-01-13 17:18:49 +01:00
board-a9m9750dev.h
board-jscc9p9360.c [ARM] 4301/1: add mach type cc9p9360js 2007-04-21 20:52:30 +01:00
board-jscc9p9360.h [ARM] 4301/1: add mach type cc9p9360js 2007-04-21 20:52:30 +01:00
clock.c const: constify remaining file_operations 2009-10-01 16:11:11 -07:00
clock.h ns9xxx: add clock api 2008-03-31 10:33:25 +02:00
generic.c ns9xxx: prepare for adding support for Digi ns921x processors 2008-03-31 08:17:01 +02:00
generic.h ns9xxx: prepare for adding support for Digi ns921x processors 2008-03-31 08:17:01 +02:00
gpio-ns9360.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
gpio-ns9360.h ns9xxx: prepare for adding support for Digi ns921x processors 2008-03-31 08:17:01 +02:00
gpio.c [ARM] gpio_free might sleep, arm architecture 2008-10-30 14:41:50 +00:00
irq.c arm: Ns9xxx: Remove private irq flow handler 2011-03-28 16:55:11 +02:00
Kconfig ns9xxx: introduce a config variable for the cc9p9360 module 2008-03-31 08:17:01 +02:00
mach-cc9p9360dev.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-cc9p9360js.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
Makefile ns9xxx: add clock api 2008-03-31 10:33:25 +02:00
Makefile.boot ns9xxx: use default text offset 2008-03-31 08:17:00 +02:00
plat-serial8250.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
processor-ns9360.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
time-ns9360.c ARM: ns9xxx: update clock source registration 2010-12-22 22:44:34 +00:00