• Tomasz Figa's avatar
    ARM: EXYNOS: Fix suspend/resume sequences · 01601b34
    Tomasz Figa authored
    Due to recent consolidation of Exynos suspend and cpuidle code, some
    parts of suspend and resume sequences are executed two times, once from
    exynos_pm_syscore_ops and then from exynos_cpu_pm_notifier() and thus it
    breaks suspend, at least on Exynos4-based boards. In addition, simple
    core power down from a cpuidle driver could, in case of CPU 0 could
    result in calling functions that are specific to suspend and deeper idle
    states.
    
    This patch fixes the issue by moving those operations outside the CPU PM
    notifier into suspend and AFTR code paths. This leads to a bit of code
    duplication, but allows additional code simplification, so in the end
    more code is removed than added.
    
    Fixes: 85f9f908 ("ARM: EXYNOS: Use the cpu_pm notifier for pm")
    Cc: Kukjin Kim <kgene.kim@samsung.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Olof Johansson <olof@lixom.net>
    Cc: arm@kernel.org
    Signed-off-by: default avatarTomasz Figa <t.figa@samsung.com>
    [b.zolnierkie: ported patch over current changes]
    [b.zolnierkie: fixed exynos_aftr_finisher() return value]
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
    01601b34
pm.c 9.23 KB