• Lorenzo Pieralisi's avatar
    ARM: kernel: update cpu_suspend code to use cache LoUIS operations · dbee0c6f
    Lorenzo Pieralisi authored
    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: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
    Reviewed-by: default avatarNicolas Pitre <nico@linaro.org>
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Tested-by: default avatarShawn Guo <shawn.guo@linaro.org>
    dbee0c6f
suspend.c 2.02 KB