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

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


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:

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

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
  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(-)