• Krzysztof Kozlowski's avatar
    ARM: EXYNOS: Fix failed second suspend on Exynos4 · 6f024978
    Krzysztof Kozlowski authored
    On Exynos4412 boards (Trats2, Odroid U3) after enabling L2 cache in
    56b60b8b ("ARM: 8265/1: dts: exynos4: Add nodes for L2 cache
    controller") the second suspend to RAM failed. First suspend worked fine
    but the next one hang just after powering down of secondary CPUs (system
    consumed energy as it would be running but was not responsive).
    
    The issue was caused by enabling delayed reset assertion for CPU0 just
    after issuing power down of cores. This was introduced for Exynos4 in
    13cfa6c4 ("ARM: EXYNOS: Fix CPU idle clock down after CPU off").
    
    The whole behavior is not well documented but after checking with vendor
    code this should be done like this (on Exynos4):
    1. Enable delayed reset assertion when system is running (for all CPUs).
    2. Disable delayed reset assertion before suspending the system.
       This can be done after powering off secondary CPUs.
    3. Re-enable the delayed reset assertion when system is resumed.
    
    Fixes: 13cfa6c4 ("ARM: EXYNOS: Fix CPU idle clock down after CPU off")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
    Tested-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Tested-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: default avatarKukjin Kim <kgene@kernel.org>
    6f024978
exynos.c 7.61 KB