ARM: mxs: Fix BUG() when invoking mxs_restart() from interrupt context
The mxs_restart() function uses of_iomap() which triggers the
following BUG_ON(in_interrupt()) when called in interrupt context
(e.g. thru SYSRQ-B):
SysRq : Resetting
------------[ cut here ]------------
kernel BUG at mm/vmalloc.c:1310!
Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
Modules linked in: i2c_dev
CPU: 0 PID: 0 Comm: swapper Not tainted 3.11.0-rc2-next-20130729-karo+ #196
task: c04e1c38 ti: c04d8000 task.ti: c04d8000
PC is at __get_vm_area_node.clone.25+0x34/0x140
LR is at get_vm_area_caller+0x38/0x44
pc : [<c008a988>] lr : [<c008b434>] psr: 20000013
sp : c04d9db0 ip : 00000001 fp : 00000001
r10: c8800000 r9 : 00000000 r8 : 000000d0
r7 : 00002000 r6 : 00000001 r5 : 00000001 r4 : 00002000
r3 : 00010000 r2 : 00000001 r1 : c04d9db0 r0 : 00002000
Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 46920000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc04d81b8)
Create the mapping upon startup from mxs_machine_init().
Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
1 file changed