pinctrl: sirf: fix kernel panic in gpio_lock_as_irq
commit
655dada6277991 causes kernel panic, this patch fixes it.
[ 1.197816] [
ffffffee] *pgd=
0d7fd821, *pte=
00000000, *ppte=
00000000
[ 1.204070] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
[ 1.209447] Modules linked in:
[ 1.212490] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc1 #3
[ 1.218737] task:
cd03c000 ti:
cd040000 task.ti:
cd040000
[ 1.224127] PC is at gpiod_lock_as_irq+0xc/0x64
[ 1.228634] LR is at sirfsoc_gpio_irq_startup+0x18/0x44
[ 1.233842] pc : [<
c01d3990>] lr : [<
c01d1c38>] psr:
a0000193
[ 1.233842] sp :
cd041d30 ip :
00000000 fp :
00000000
[ 1.245296] r10:
00000000 r9 :
cd023db4 r8 :
60000113
[ 1.250505] r7 :
0000003e r6 :
cd023dd4 r5 :
c06bfa54 r4 :
cd023d80
[ 1.257014] r3 :
00000020 r2 :
00000000 r1 :
ffffffea r0 :
ffffffea
[ 1.263526] Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 1.270903] Control:
10c53c7d Table:
00004059 DAC:
00000015
[ 1.276631] Process swapper/0 (pid: 1, stack limit = 0xcd040240)
[ 1.282620] Stack: (0xcd041d30 to 0xcd042000)
[ 1.286963] 1d20:
cd023d80 c01d1c38 c01d1c20 cd023d80
[ 1.295124] 1d40:
00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
[ 1.286963] 1d20:
cd023d80 c01d1c38 c01d1c20 cd023d80
[ 1.295124] 1d40:
00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
[ 1.295124] 1d40:
00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
[ 1.303283] 1d60:
00000800 00000083 ccb6d880 cd023d80 c02b41d8 00000083 0000003e ccb7c410
[ 1.311442] 1d80:
00000000 c00671dc 00000083 0000003e c02b41d8 cd3dd5c0 0000003e ccb7c634
[ 1.319601] 1da0:
cd040030 c00672a8 cd3dd5c0 ccb7c410 ccb6d340 ccb7c410 ccb6d340 cd3dd400
[ 1.327760] 1dc0:
cd3dd410 c02b4434 ccb7c410 c01265a8 00000001 cd3dd410 c0687108 00000000
[ 1.335919] 1de0:
c0687108 00000000 00000000 c0240170 c0240158 cd3dd410 c06c30d0 c023e8bc
[ 1.344079] 1e00:
c023e9d4 00000000 cd3dd410 c023e9d4 c0682150 c023cf88 cd003e98 cd2d50c4
[ 1.352238] 1e20:
cd3dd410 cd3dd444 c06822f0 c023e768 cd3dd418 cd3dd410 c06822f0 c023de14
[ 1.360397] 1e40:
cd3dd418 00000000 cd3dd410 c023c398 cd041e78 cd041ea8 cd3dd400 cd3dd410
[ 1.368556] 1e60:
00000083 00000000 cd3dd400 cd3dd410 00000083 000000c8 c04e00c8 c023fee8
[ 1.376715] 1e80:
00000000 cd041ea8 cd3dd400 00000001 00000083 c024048c c0435ef8 c0434dec
[ 1.384874] 1ea0:
c068da58 c04c6d04 c0682150 c0435ef8 ffffffff 00000000 00000000 c068da58
[ 1.393033] 1ec0:
00000020 00000000 00000000 00000000 c05dabb8 00000007 c068d640 c068d640
[ 1.401193] 1ee0:
c04c247c c04c249c 00000000 c00088e8 cd004c00 c043bbb8 cd029180 c03812a0
[ 1.409352] 1f00:
00000000 00000000 60000113 c0673728 60000113 c0673728 00000000 00000000
[ 1.417511] 1f20:
cd7fce01 c0390a54 00000065 c003a81c c049e8bc 00000007 cd7fce0e 00000007
[ 1.425670] 1f40:
00000000 c05dabb8 00000007 c068d640 c068d640 c04c050c c04e00c8 00000065
[ 1.433829] 1f60:
c04e00c0 c04c0c54 00000007 00000007 c04c050c c037d8fc cd03c000 c004322c
[ 1.441988] 1f80:
c0662b40 0000d640 c03737c0 00000000 00000000 00000000 00000000 00000000
[ 1.450147] 1fa0:
00000000 c03737cc 00000000 c000e478 00000000 00000000 00000000 00000000
[ 1.458307] 1fc0:
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.466467] 1fe0:
00000000 00000000 00000000 00000000 00000013 00000000 0002d481 05014092
[ 1.474640] [<
c01d3990>] (gpiod_lock_as_irq) from [<
c01d1c38>] (sirfsoc_gpio_irq_startup+0x18/0x44)
[ 1.483661] [<
c01d1c38>] (sirfsoc_gpio_irq_startup) from [<
c0068438>] (irq_startup+0x34/0x6c)
[ 1.492163] [<
c0068438>] (irq_startup) from [<
c0067044>] (__setup_irq+0x450/0x4b8)
[ 1.499714] [<
c0067044>] (__setup_irq) from [<
c00671dc>] (request_threaded_irq+0xa8/0x128)
[ 1.507960] [<
c00671dc>] (request_threaded_irq) from [<
c00672a8>] (request_any_context_irq+0x4c/0x7c)
[ 1.517164] [<
c00672a8>] (request_any_context_irq) from [<
c02b4434>] (gpio_extcon_probe+0x144/0x1d4)
[ 1.526279] [<
c02b4434>] (gpio_extcon_probe) from [<
c0240170>] (platform_drv_probe+0x18/0x48)
[ 1.534783] [<
c0240170>] (platform_drv_probe) from [<
c023e8bc>] (driver_probe_device+0x120/0x238)
[ 1.543641] [<
c023e8bc>] (driver_probe_device) from [<
c023cf88>] (bus_for_each_drv+0x58/0x8c)
[ 1.552143] [<
c023cf88>] (bus_for_each_drv) from [<
c023e768>] (device_attach+0x74/0x88)
[ 1.560126] [<
c023e768>] (device_attach) from [<
c023de14>] (bus_probe_device+0x84/0xa8)
[ 1.568113] [<
c023de14>] (bus_probe_device) from [<
c023c398>] (device_add+0x440/0x520)
[ 1.576012] [<
c023c398>] (device_add) from [<
c023fee8>] (platform_device_add+0xb4/0x214)
[ 1.584084] [<
c023fee8>] (platform_device_add) from [<
c024048c>] (platform_device_register_full+0xb8/0xdc)
[ 1.593719] [<
c024048c>] (platform_device_register_full) from [<
c04c6d04>] (sirfsoc_init_late+0xec/0xf4)
[ 1.603185] [<
c04c6d04>] (sirfsoc_init_late) from [<
c04c249c>] (init_machine_late+0x20/0x28)
[ 1.611603] [<
c04c249c>] (init_machine_late) from [<
c00088e8>] (do_one_initcall+0xf8/0x144)
[ 1.619934] [<
c00088e8>] (do_one_initcall) from [<
c04c0c54>] (kernel_init_freeable+0x13c/0x1dc)
[ 1.628620] [<
c04c0c54>] (kernel_init_freeable) from [<
c03737cc>] (kernel_init+0xc/0x118)
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>