linux/arch/arm/mach-shmobile
Magnus Damm 1cf215a5b4 ARM: mach-shmobile: INTC interrupt priority level demux fix
Fix interrupt priority level handling on SH-Mobile ARM.

SH-Mobile ARM platforms using multiple interrupt priority
levels need this patch to fix a potential dead lock that
may occur if multiple interrupts with different levels
are pending simultaneously.

The default INTC configuration is to use the same priority
level for all interrupts, so this issue does not trigger by
default. It is however common for board code to override the
interrupt priority for certain interrupt sources depending
on the application. Without this fix such boards may lock up.

In detail, this patch updates the INTC code in entry-macro.S
to make sure that the INTLVLA register gets set as expected.

To trigger this bug modify the board specific code to adjust
the interrupt priority level for the ethernet chip. After
changing the priority level simply use flood ping to drown
the board with interrupts.

This patch applies to INTCA-based processors such as sh7372,
sh7377 and sh7372. GIC-based processors are not affected.

Suitable for v2.6.37-rc and stable from v2.6.34 to v2.6.36.

Cc: stable@kernel.org
Signed-off-by: Magnus Damm <damm@opensource.se>
Tested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2010-12-17 19:42:47 +09:00
..
include/mach ARM: mach-shmobile: INTC interrupt priority level demux fix 2010-12-17 19:42:47 +09:00
Kconfig ARM: mach-shmobile: include drivers/sh/Kconfig 2010-11-01 11:38:06 -04:00
Makefile ARM: mach-shmobile: Runtime PM V3 2010-08-16 13:16:19 +09:00
Makefile.boot ARM: mach-shmobile: SH-Mobile G3 support. 2010-02-08 12:44:11 +09:00
board-ap4evb.c ARM: mach-shmobile: clock-sh7372: remove bogus pllc2 clock toggling. 2010-11-24 15:34:04 +09:00
board-g3evm.c arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
board-g4evm.c arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
clock-sh7367.c ARM: shmobile: use device name for timer clocks 2010-10-13 18:47:04 +09:00
clock-sh7372.c Merge branch 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2010-11-27 07:17:16 +09:00
clock-sh7377.c ARM: shmobile: use device name for timer clocks 2010-10-13 18:47:04 +09:00
clock.c ARM: mach-shmobile: Clock framework comment fix 2010-08-18 16:31:00 +09:00
console.c ARM: mach-shmobile: early console support using earlyprintk 2010-02-09 10:34:12 +09:00
intc-sh7367.c ARM: mach-shmobile: Add missing __initdata on intcs sh7367/sh7377 2010-04-07 16:26:47 +09:00
intc-sh7372.c ARM: mach-shmobile: intc-sh7372: fix interrupt number 2010-11-08 13:48:50 +09:00
intc-sh7377.c ARM: mach-shmobile: Add missing __initdata on intcs sh7367/sh7377 2010-04-07 16:26:47 +09:00
pfc-sh7367.c ARM: mach-shmobile: sh7367 and G3EVM pinmux support 2010-02-12 14:10:47 +09:00
pfc-sh7372.c ARM: mach-shmobile: pfc-sh7372: modify wrong comment 2010-09-14 17:20:13 +09:00
pfc-sh7377.c ARM: mach-shmobile: pfc-sh7377: modify KEYIN settings 2010-02-23 11:17:30 +09:00
pm_runtime.c ARM: mach-shmobile: Runtime PM V3 2010-08-16 13:16:19 +09:00
setup-sh7367.c ARM: shmobile: use device name for timer clocks 2010-10-13 18:47:04 +09:00
setup-sh7372.c ARM: mach-shmobile: add TMU platform data for sh7372 2010-10-15 20:16:45 +09:00
setup-sh7377.c ARM: shmobile: use device name for timer clocks 2010-10-13 18:47:04 +09:00
timer.c ARM: mach-shmobile: SH-Mobile G3 support. 2010-02-08 12:44:11 +09:00