kernel_optimize_test/arch
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
..
alpha remove dma64_addr_t 2011-03-23 19:47:18 -07:00
arm arm: Ns9xxx: Remove private irq flow handler 2011-03-28 16:55:11 +02:00
avr32 Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin 2011-03-24 08:24:28 -07:00
cris remove dma64_addr_t 2011-03-23 19:47:18 -07:00
frv bitops: remove minix bitops from asm/bitops.h 2011-03-23 19:46:22 -07:00
h8300 Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
ia64 lib, arch: add filter argument to show_mem and fix private implementations 2011-03-24 17:49:37 -07:00
m32r Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
m68k m68k: merge m68k and m68knommu arch directories 2011-03-25 14:05:13 +10:00
microblaze bitops: introduce CONFIG_GENERIC_FIND_BIT_LE 2011-03-23 19:46:14 -07:00
mips MIPS: JZ4740: Set nand ecc offsets for the qi_lb60 board 2011-03-25 18:45:21 +01:00
mn10300 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300 2011-03-24 10:07:50 -07:00
parisc lib, arch: add filter argument to show_mem and fix private implementations 2011-03-24 17:49:37 -07:00
powerpc powerpc: cell: Use the core flow handler 2011-03-28 16:55:11 +02:00
s390 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 2011-03-25 17:47:04 -07:00
score mm: NUMA aware alloc_thread_info_node() 2011-03-22 17:44:01 -07:00
sh Merge branch 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2011-03-24 10:04:59 -07:00
sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2011-03-25 17:47:38 -07:00
tile lib, arch: add filter argument to show_mem and fix private implementations 2011-03-24 17:49:37 -07:00
um um: Use generic show_interrupts() 2011-03-24 20:35:57 +01:00
unicore32 lib, arch: add filter argument to show_mem and fix private implementations 2011-03-24 17:49:37 -07:00
x86 Merge branch 'syscore' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 2011-03-25 21:07:59 -07:00
xtensa Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
.gitignore
Kconfig