[0/4] Odroid XU3/4: add system suspend/resume support

Message ID 20190218143412.6865-1-m.szyprowski@samsung.com
Headers show
Series
  • Odroid XU3/4: add system suspend/resume support
Related show

Message

Marek Szyprowski Feb. 18, 2019, 2:34 p.m.
Dear All,

This patchset is a result of my recent works on fixing system suspend/resume
on Exynos5422-based Odroid XU3/XU4 boards running under secure firmware.

The initial work has been done some time ago by Joonyoung Shim, who noticed
the missing secure monitor calls during suspend/resume operation. However
that was not enough to make suspend/resume stable. Typically 1 out of 10
cycles ended in a freeze during suspend. Also enabling performance events
in kernel configuration mysteriously broke suspend/resume operation.

The first issue (random freeze) has been recently fixed by Stuart Menefy
in Exynos MultiCore Timer patches initially posted in the "Resuscitate
Exynos 5260 support" thread:
https://patchwork.kernel.org/patch/10804959/
https://patchwork.kernel.org/patch/10804961/

The second issue turned out to be ralated to the incorrect debug status
control register (DSCR) state in the system resume. The last patch
provides a workaround for that issues.

This patchset has been tested on top of linux-next from 20190218 on the
following boards:
- Odroid XU3 (Exynos5422, secure firmware)
- Odroid XU3-lite (Exynos5422, secure firmware, no ARM PMU available)
- Odroid XU4 (Exynos5422, secure firmware)
- Odroid HC1 (Exynos5422, secure firmware)
- Chromebook2 Peach-Pit (Exynos5420, no secure firmware)
- Chromebook2 Peach-Pi (Exynos5800, no secure firmware)

On all above boards the system suspend/resume works fine now.

There are a few minor issues in some device drivers that triggers kernel
warning during the suspend/resume cycle, but they are not critical for the
stability. Most of them has been reported to respective maintainers so
far.

Best regards
Marek Szyprowski
Samsung R&D Institute Poland


Patch summary:

Marek Szyprowski (4):
  ARM: exynos: Move Exynos542x CPU state reset to pm_prepare()
  ARM: exynos: Add Exynos SMC values for secure memory write
  ARM: exynos: Add CPU state management for Exynos542x under secure
    firmware
  ARM: exynos: Fix undefined instruction during Exynos5422 resume

 arch/arm/mach-exynos/common.h  |  1 +
 arch/arm/mach-exynos/exynos.c  |  3 +++
 arch/arm/mach-exynos/smc.h     |  7 ++++++
 arch/arm/mach-exynos/suspend.c | 39 ++++++++++++++++++++++++++++++----
 4 files changed, 46 insertions(+), 4 deletions(-)

-- 
2.17.1