Difference between revisions of "ARM Hibernation"

From eLinux.org
Jump to: navigation, search
Line 1: Line 1:
'''Extending the swsusp Hibernation Framework to ARM''' - Russell Dill, Texas Instruments, Inc.
+
== Introduction ==
  
This talk looks at bringing hibernation support to ARM, with a focus on OMAP. The presentation will include a brief technical overview of the swsusp framework (the mainline hibernation framework), followed by an in-depth discussion of implementations on AM33XX and OMAP3. The talk will also touch on topics closely related to hibernation such as snapshot boot, hibernation restore from bootloader, and self-refresh only suspend/off modes.
+
The swsusp framework provides hibernation support on mainline kernels. This page discusses adding that functionality to ARM.
  
The presentation is aimed towards embedded developers and hobbyists with an interest in power management. Attendees will gain a greater understanding of swsusp and the technical issues involved in extending support to a new SoC.
+
== Motivation ==
  
* Slides
+
Providing hibernation support for ARM provides several advantages:
 +
* Zero power consumption sleep
 +
* Snapshot boot ability
 +
* Shared effort with DDR self-refresh only suspend modes (such as RTC-only on am335x)
 +
 
 +
Utilizing the mainline swsusp framework also provides to uswsusp, allowing flexibility with where and how hibernation images are stored.
 +
 
 +
== Challenges ==
 +
 
 +
The primary challenge to bringing hibernation to ARM is the complex state of PM within ARM, the large amount of CPU registers related to PM, and the complexity of saving and restoring those registers properly.
 +
 
 +
== Patches ==
 +
 
 +
A set of patches is available for am335x hibernation, it is currently based on 3.8-rc5 plus some TI PM and am33xx patches.
 +
 
 +
* Base of patchset: https://github.com/russdill/linux/commits/arm-hibernation-am33xx
 +
* am33xx WKUP domain save/restore: https://github.com/russdill/linux/commits/arm-hibernation-am33xx-wkup
 +
* Generic hibernation support for ARM: https://github.com/russdill/linux/commits/arm-hibernation
 +
* am33xx hibernation support: https://github.com/russdill/linux/commits/arm-hibernation-am33xx
 +
 
 +
== U-Boot restore ==
 +
 
 +
Rather than utilizing a boot kernel to reload a hibernation image, U-Boot can be used directly. Patchset available against v2013.01 here:
 +
 
 +
https://github.com/russdill/commits/hibernation
 +
 
 +
This has the advantage of potentially being faster as a boot kernel does not need to be run, but it has the disadvantage that loading and decompressing pages from disk can be slower under U-Boot.
 +
 
 +
To function, it requires the kernel to pass a cpu_resume function and also restore it's nosave section.
 +
 
 +
== Articles and presentations ===
 +
 
 +
* Previous work based on 2.6.11: [[Suspend To Disk For ARM]]
 +
* Extending the swsusp Hibernation Framework to ARM
 +
  - To be presented by Russ Dill at ELC 2013
 +
  - Slides available at:

Revision as of 20:11, 19 February 2013

Introduction

The swsusp framework provides hibernation support on mainline kernels. This page discusses adding that functionality to ARM.

Motivation

Providing hibernation support for ARM provides several advantages:

  • Zero power consumption sleep
  • Snapshot boot ability
  • Shared effort with DDR self-refresh only suspend modes (such as RTC-only on am335x)

Utilizing the mainline swsusp framework also provides to uswsusp, allowing flexibility with where and how hibernation images are stored.

Challenges

The primary challenge to bringing hibernation to ARM is the complex state of PM within ARM, the large amount of CPU registers related to PM, and the complexity of saving and restoring those registers properly.

Patches

A set of patches is available for am335x hibernation, it is currently based on 3.8-rc5 plus some TI PM and am33xx patches.

U-Boot restore

Rather than utilizing a boot kernel to reload a hibernation image, U-Boot can be used directly. Patchset available against v2013.01 here:

https://github.com/russdill/commits/hibernation

This has the advantage of potentially being faster as a boot kernel does not need to be run, but it has the disadvantage that loading and decompressing pages from disk can be slower under U-Boot.

To function, it requires the kernel to pass a cpu_resume function and also restore it's nosave section.

Articles and presentations =

  - To be presented by Russ Dill at ELC 2013
  - Slides available at: