summaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-09-01 12:57:59 +0200
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-09-21 00:33:47 +0200
commit8e6f83bbdf770014c070c5a41c8e89617cb2a66b (patch)
treec8c66226bd52a6b26229f0a95bf45851bef8974b /arch/arm/kernel
parentARM: pm: convert some assembly to C (diff)
downloadlinux-8e6f83bbdf770014c070c5a41c8e89617cb2a66b.tar.xz
linux-8e6f83bbdf770014c070c5a41c8e89617cb2a66b.zip
ARM: pm: add L2 cache cleaning for suspend
We need to ensure that state is pushed out from the L2 cache when suspending so that the resume paths can access their data before the MMU and caches have been re-initialized. Add the necessary calls to __cpu_suspend_save(). Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Tested-by: Shawn Guo <shawn.guo@linaro.org> Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/suspend.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/kernel/suspend.c b/arch/arm/kernel/suspend.c
index 2d60f1903206..93a22d282c16 100644
--- a/arch/arm/kernel/suspend.c
+++ b/arch/arm/kernel/suspend.c
@@ -28,6 +28,9 @@ void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr)
cpu_do_suspend(ptr);
flush_cache_all();
+ outer_clean_range(*save_ptr, *save_ptr + ptrsz);
+ outer_clean_range(virt_to_phys(save_ptr),
+ virt_to_phys(save_ptr) + sizeof(*save_ptr));
}
/*