diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2015-08-13 11:04:28 +0200 |
---|---|---|
committer | Stefan Agner <stefan.agner@toradex.com> | 2015-08-13 11:04:28 +0200 |
commit | 9ea23a6a53311a6f93dc905a9c2c35c34646eaa5 (patch) | |
tree | caf84e0fbb7360921c0df4f4259f8770d7618d29 | |
parent | 9658f3e87a966320ddf5d8e6e156109d5272db9a (diff) |
ARM: vf610: PM: flush cache before entering STOP mode
Flush caches before entering stop mode. This fixes a stack trace
which have been observed every ~3rd time entering Vybrid's STOP
mode (standby):
[ 103.630698] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 103.630698] pgd = 8e3cc000
[ 103.630698] [00000000] *pgd=8dae6831, *pte=00000000, *ppte=00000000
[ 103.630698] Internal error: Oops: 817 [#1] ARM
[ 103.630698] Modules linked in:
[ 103.630698] CPU: 0 PID: 164 Comm: sh Not tainted 4.1.5-00149-g9658f3e-dirty #391
[ 103.630698] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
[ 103.630698] task: 8d8d2140 ti: 8d866000 task.ti: 8d866000
[ 103.630698] PC is at cpu_ca8_dcache_clean_area+0x1c/0x34
[ 103.630698] LR is at vf610_pm_enter+0x74/0x84
[ 103.630698] pc : [<8001d648>] lr : [<80020a0c>] psr: a00f0093
[ 103.630698] sp : 8d867dd8 ip : 8d867da8 fp : 8d867de4
[ 103.630698] r10: 00000000 r9 : 807a6ad2 r8 : 807a60d4
[ 103.630698] r7 : 807d8f8c r6 : 00000002 r5 : 807d8f8c r4 : 00000000
[ 103.630698] r3 : 8001d620 r2 : 00000000 r1 : 00000000 r0 : 00000000
[ 103.630698] Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
[ 103.630698] Control: 10c5387d Table: 8e3cc059 DAC: 00000015
[ 103.630698] Process sh (pid: 164, stack limit = 0x8d866208)
-rw-r--r-- | arch/arm/mach-imx/pm-vf610.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/pm-vf610.c b/arch/arm/mach-imx/pm-vf610.c index 4af521bec760..7192924e009f 100644 --- a/arch/arm/mach-imx/pm-vf610.c +++ b/arch/arm/mach-imx/pm-vf610.c @@ -366,6 +366,7 @@ static int vf610_pm_enter(suspend_state_t state) switch (state) { case PM_SUSPEND_STANDBY: vf610_set_lpm(VF610_STOP); + flush_cache_all(); /* zzZZZzzz */ cpu_do_idle(); |