MLK-11619 : ARM: imx: gpc: fix system boot crash on i.mx6sx-sdb board
authorRobin Gong <b38343@freescale.com>
Thu, 24 Sep 2015 08:10:42 +0000 (16:10 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:48:41 +0000 (14:48 -0500)
commit335eedccf07322dd0d2e7bfc18a13854528af471
tree2ff322eb85296295324799fdbc27a4510f249682
parent5dcf806c4c97dd4c07887bf09f4bd707f0ab4fa0
MLK-11619 : ARM: imx: gpc: fix system boot crash on i.mx6sx-sdb board

need add pu_reg check for bypass since there is no VDDPU on i.mx6sx, otherwise,
below crash happen:

Unable to handle kernel NULL pointer dereference at virtual address 00000030
pgd = 80004000
[00000030] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.1.4-00811-g61e6dcd-dirty #519
Hardware name: Freescale i.MX6 SoloX (Device Tree)
task: ab068000 ti: ab06c000 task.ti: ab06c000
PC is at regulator_allow_bypass+0x4/0x11c
LR is at imx_gpc_probe+0x284/0x310
pc : [<80313ef0>]    lr : [<80025a50>]    psr: 20000113
sp : ab06de38  ip : 00000001  fp : 00000000
r10: 80a8d42c  r9 : 0000010b  r8 : ab106010
r7 : fffffdfb  r6 : 00000000  r5 : ab106000  r4 : 00000000
r3 : 00000001  r2 : ab06de54  r1 : 00000001  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5387d  Table: 8000404a  DAC: 00000015
Process swapper/0 (pid: 1, stack limit = 0xab06c210)
Stack: (0xab06de38 to 0xab06e000)
de20:                                                       00000000 ab106000
de40: 00000000 fffffdfb ab106010 80025a50 ab103d70 00000001 ab129000 80b5e2fc
de60: ab106010 80aa8e84 fffffdfb 00000000 0000010b 80a8d42c 00000000 803677ac
de80: 80367768 80b5e2fc ab106010 00000000 80aa8e84 80366040 ab106010 80aa8e84
dea0: ab106044 80aca820 00000000 80366250 00000000 80aa8e84 803661c4 80364584
dec0: ab03695c ab104234 80aa8e84 ab122580 00000000 803657dc 80921954 80aa8e84
dee0: 80aa5720 80aa8e84 80aa5720 ab126fc0 80a44b54 80366854 00000000 80aa5720
df00: 80aa5720 800097d0 ab0b8380 80760508 00000010 00000000 00000000 00000001
df20: 00000000 80aacea8 60000113 00000000 80a37598 809fdb04 abfff947 8004a0b0
df40: 8091bfa4 abfff97f 00000004 00000004 80aace90 80a9952c 80a99534 00000004
df60: 80a8d41c 80b07000 80b07000 80a8d42c 00000000 80a37dac 00000004 00000004
df80: 80a37598 8004e698 00000000 80752480 00000000 00000000 00000000 00000000
dfa0: 00000000 80752488 00000000 8000f628 00000000 00000000 00000000 00000000
dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[<80313ef0>] (regulator_allow_bypass) from [<80025a50>] (imx_gpc_probe+0x284/0x310)
[<80025a50>] (imx_gpc_probe) from [<803677ac>] (platform_drv_probe+0x44/0xa4)
[<803677ac>] (platform_drv_probe) from [<80366040>] (driver_probe_device+0x174/0x2b4)
[<80366040>] (driver_probe_device) from [<80366250>] (__driver_attach+0x8c/0x90)
[<80366250>] (__driver_attach) from [<80364584>] (bus_for_each_dev+0x6c/0xa0)
[<80364584>] (bus_for_each_dev) from [<803657dc>] (bus_add_driver+0x148/0x1f0)
[<803657dc>] (bus_add_driver) from [<80366854>] (driver_register+0x78/0xf8)
[<80366854>] (driver_register) from [<800097d0>] (do_one_initcall+0x8c/0x1d4)
[<800097d0>] (do_one_initcall) from [<80a37dac>] (kernel_init_freeable+0x144/0x1e4)
[<80a37dac>] (kernel_init_freeable) from [<80752488>] (kernel_init+0x8/0xe8)
[<80752488>] (kernel_init) from [<8000f628>] (ret_from_fork+0x14/0x2c)
Code: eb111a0a e1a00005 e8bd80f8 e92d41f0 (e5906030)

Signed-off-by: Robin Gong <b38343@freescale.com>
arch/arm/mach-imx/gpc.c