ARM: pm: add L2 cache cleaning for suspend
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 1 Sep 2011 10:57:59 +0000 (11:57 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 20 Sep 2011 22:33:47 +0000 (23:33 +0100)
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>
arch/arm/kernel/suspend.c

index 2d60f19032068e62ef38e53f3e1a154118c9dcac..93a22d282c167c1ad9753c81277c8948d153e933 100644 (file)
@@ -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));
 }
 
 /*