]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
ARM: kernel: update cpu_suspend code to use cache LoUIS operations
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Fri, 7 Sep 2012 05:36:57 +0000 (11:06 +0530)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tue, 25 Sep 2012 10:20:26 +0000 (11:20 +0100)
commitdbee0c6fb4c1269b2dfc8b0b7a29907ea7fed560
tree893b25918fea5ebb4016ffda4d6d8dc185b7c7ba
parent3287be8c4e2bd91211b3947ba726d95e8a1092b5
ARM: kernel: update cpu_suspend code to use cache LoUIS operations

In processors like A15/A7 L2 cache is unified and integrated within the
processor cache hierarchy, so that it is not considered an outer cache
anymore. For processors like A15/A7 flush_cache_all() ends up cleaning
all cache levels up to Level of Coherency (LoC) that includes
the L2 unified cache.

When a single CPU is suspended (CPU idle) a complete L2 clean is not
required, so generic cpu_suspend code must clean the data cache using the
newly introduced cache LoUIS function.

The context and stack pointer (context pointer) are cleaned to main memory
using cache area functions that operate on MVA and guarantee that the data
is written back to main memory (perform cache cleaning up to the Point of
Coherency - PoC) so that the processor can fetch the context when the MMU
is off in the cpu_resume code path.

outer_cache management remains unchanged.

Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
arch/arm/kernel/suspend.c