summaryrefslogtreecommitdiffstats
path: root/Documentation/power
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-13 13:41:53 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-13 13:41:53 -0500
commit7b9dc3f75fc8be046e76387a22a21f421ce55b53 (patch)
treedd42312eebdcb5273461b304384d49a7e7e5fa73 /Documentation/power
parent36869cb93d36269f34800b3384ba7991060a69cf (diff)
parentbbc17bb8a89b3eb31520abf3a9b362d5ee54f908 (diff)
Merge tag 'pm-4.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull power management updates from Rafael Wysocki: "Again, cpufreq gets more changes than the other parts this time (one new driver, one old driver less, a bunch of enhancements of the existing code, new CPU IDs, fixes, cleanups) There also are some changes in cpuidle (idle injection rework, a couple of new CPU IDs, online/offline rework in intel_idle, fixes and cleanups), in the generic power domains framework (mostly related to supporting power domains containing CPUs), and in the Operating Performance Points (OPP) library (mostly related to supporting devices with multiple voltage regulators) In addition to that, the system sleep state selection interface is modified to make it easier for distributions with unchanged user space to support suspend-to-idle as the default system suspend method, some issues are fixed in the PM core, the latency tolerance PM QoS framework is improved a bit, the Intel RAPL power capping driver is cleaned up and there are some fixes and cleanups in the devfreq subsystem Specifics: - New cpufreq driver for Broadcom STB SoCs and a Device Tree binding for it (Markus Mayer) - Support for ARM Integrator/AP and Integrator/CP in the generic DT cpufreq driver and elimination of the old Integrator cpufreq driver (Linus Walleij) - Support for the zx296718, r8a7743 and r8a7745, Socionext UniPhier, and PXA SoCs in the the generic DT cpufreq driver (Baoyou Xie, Geert Uytterhoeven, Masahiro Yamada, Robert Jarzmik) - cpufreq core fix to eliminate races that may lead to using inactive policy objects and related cleanups (Rafael Wysocki) - cpufreq schedutil governor update to make it use SCHED_FIFO kernel threads (instead of regular workqueues) for doing delayed work (to reduce the response latency in some cases) and related cleanups (Viresh Kumar) - New cpufreq sysfs attribute for resetting statistics (Markus Mayer) - cpufreq governors fixes and cleanups (Chen Yu, Stratos Karafotis, Viresh Kumar) - Support for using generic cpufreq governors in the intel_pstate driver (Rafael Wysocki) - Support for per-logical-CPU P-state limits and the EPP/EPB (Energy Performance Preference/Energy Performance Bias) knobs in the intel_pstate driver (Srinivas Pandruvada) - New CPU ID for Knights Mill in intel_pstate (Piotr Luc) - intel_pstate driver modification to use the P-state selection algorithm based on CPU load on platforms with the system profile in the ACPI tables set to "mobile" (Srinivas Pandruvada) - intel_pstate driver cleanups (Arnd Bergmann, Rafael Wysocki, Srinivas Pandruvada) - cpufreq powernv driver updates including fast switching support (for the schedutil governor), fixes and cleanus (Akshay Adiga, Andrew Donnellan, Denis Kirjanov) - acpi-cpufreq driver rework to switch it over to the new CPU offline/online state machine (Sebastian Andrzej Siewior) - Assorted cleanups in cpufreq drivers (Wei Yongjun, Prashanth Prakash) - Idle injection rework (to make it use the regular idle path instead of a home-grown custom one) and related powerclamp thermal driver updates (Peter Zijlstra, Jacob Pan, Petr Mladek, Sebastian Andrzej Siewior) - New CPU IDs for Atom Z34xx and Knights Mill in intel_idle (Andy Shevchenko, Piotr Luc) - intel_idle driver cleanups and switch over to using the new CPU offline/online state machine (Anna-Maria Gleixner, Sebastian Andrzej Siewior) - cpuidle DT driver update to support suspend-to-idle properly (Sudeep Holla) - cpuidle core cleanups and misc updates (Daniel Lezcano, Pan Bian, Rafael Wysocki) - Preliminary support for power domains including CPUs in the generic power domains (genpd) framework and related DT bindings (Lina Iyer) - Assorted fixes and cleanups in the generic power domains (genpd) framework (Colin Ian King, Dan Carpenter, Geert Uytterhoeven) - Preliminary support for devices with multiple voltage regulators and related fixes and cleanups in the Operating Performance Points (OPP) library (Viresh Kumar, Masahiro Yamada, Stephen Boyd) - System sleep state selection interface rework to make it easier to support suspend-to-idle as the default system suspend method (Rafael Wysocki) - PM core fixes and cleanups, mostly related to the interactions between the system suspend and runtime PM frameworks (Ulf Hansson, Sahitya Tummala, Tony Lindgren) - Latency tolerance PM QoS framework imorovements (Andrew Lutomirski) - New Knights Mill CPU ID for the Intel RAPL power capping driver (Piotr Luc) - Intel RAPL power capping driver fixes, cleanups and switch over to using the new CPU offline/online state machine (Jacob Pan, Thomas Gleixner, Sebastian Andrzej Siewior) - Fixes and cleanups in the exynos-ppmu, exynos-nocp, rk3399_dmc, rockchip-dfi devfreq drivers and the devfreq core (Axel Lin, Chanwoo Choi, Javier Martinez Canillas, MyungJoo Ham, Viresh Kumar) - Fix for false-positive KASAN warnings during resume from ACPI S3 (suspend-to-RAM) on x86 (Josh Poimboeuf) - Memory map verification during resume from hibernation on x86 to ensure a consistent address space layout (Chen Yu) - Wakeup sources debugging enhancement (Xing Wei) - rockchip-io AVS driver cleanup (Shawn Lin)" * tag 'pm-4.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (127 commits) devfreq: rk3399_dmc: Don't use OPP structures outside of RCU locks devfreq: rk3399_dmc: Remove dangling rcu_read_unlock() devfreq: exynos: Don't use OPP structures outside of RCU locks Documentation: intel_pstate: Document HWP energy/performance hints cpufreq: intel_pstate: Support for energy performance hints with HWP cpufreq: intel_pstate: Add locking around HWP requests PM / sleep: Print active wakeup sources when blocking on wakeup_count reads PM / core: Fix bug in the error handling of async suspend PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend PM / Domains: Fix compatible for domain idle state PM / OPP: Don't WARN on multiple calls to dev_pm_opp_set_regulators() PM / OPP: Allow platform specific custom set_opp() callbacks PM / OPP: Separate out _generic_set_opp() PM / OPP: Add infrastructure to manage multiple regulators PM / OPP: Pass struct dev_pm_opp_supply to _set_opp_voltage() PM / OPP: Manage supply's voltage/current in a separate structure PM / OPP: Don't use OPP structure outside of rcu protected section PM / OPP: Reword binding supporting multiple regulators per device PM / OPP: Fix incorrect cpu-supply property in binding cpuidle: Add a kerneldoc comment to cpuidle_use_deepest_state() ..
Diffstat (limited to 'Documentation/power')
-rw-r--r--Documentation/power/devices.txt14
-rw-r--r--Documentation/power/states.txt62
2 files changed, 53 insertions, 23 deletions
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt
index 8ba6625fdd63..73ddea39a9ce 100644
--- a/Documentation/power/devices.txt
+++ b/Documentation/power/devices.txt
@@ -607,7 +607,9 @@ individually. Instead, a set of devices sharing a power resource can be put
607into a low-power state together at the same time by turning off the shared 607into a low-power state together at the same time by turning off the shared
608power resource. Of course, they also need to be put into the full-power state 608power resource. Of course, they also need to be put into the full-power state
609together, by turning the shared power resource on. A set of devices with this 609together, by turning the shared power resource on. A set of devices with this
610property is often referred to as a power domain. 610property is often referred to as a power domain. A power domain may also be
611nested inside another power domain. The nested domain is referred to as the
612sub-domain of the parent domain.
611 613
612Support for power domains is provided through the pm_domain field of struct 614Support for power domains is provided through the pm_domain field of struct
613device. This field is a pointer to an object of type struct dev_pm_domain, 615device. This field is a pointer to an object of type struct dev_pm_domain,
@@ -629,6 +631,16 @@ support for power domains into subsystem-level callbacks, for example by
629modifying the platform bus type. Other platforms need not implement it or take 631modifying the platform bus type. Other platforms need not implement it or take
630it into account in any way. 632it into account in any way.
631 633
634Devices may be defined as IRQ-safe which indicates to the PM core that their
635runtime PM callbacks may be invoked with disabled interrupts (see
636Documentation/power/runtime_pm.txt for more information). If an IRQ-safe
637device belongs to a PM domain, the runtime PM of the domain will be
638disallowed, unless the domain itself is defined as IRQ-safe. However, it
639makes sense to define a PM domain as IRQ-safe only if all the devices in it
640are IRQ-safe. Moreover, if an IRQ-safe domain has a parent domain, the runtime
641PM of the parent is only allowed if the parent itself is IRQ-safe too with the
642additional restriction that all child domains of an IRQ-safe parent must also
643be IRQ-safe.
632 644
633Device Low Power (suspend) States 645Device Low Power (suspend) States
634--------------------------------- 646---------------------------------
diff --git a/Documentation/power/states.txt b/Documentation/power/states.txt
index 50f3ef9177c1..8a39ce45d8a0 100644
--- a/Documentation/power/states.txt
+++ b/Documentation/power/states.txt
@@ -8,25 +8,43 @@ for each state.
8 8
9The states are represented by strings that can be read or written to the 9The states are represented by strings that can be read or written to the
10/sys/power/state file. Those strings may be "mem", "standby", "freeze" and 10/sys/power/state file. Those strings may be "mem", "standby", "freeze" and
11"disk", where the last one always represents hibernation (Suspend-To-Disk) and 11"disk", where the last three always represent Power-On Suspend (if supported),
12the meaning of the remaining ones depends on the relative_sleep_states command 12Suspend-To-Idle and hibernation (Suspend-To-Disk), respectively.
13line argument. 13
14 14The meaning of the "mem" string is controlled by the /sys/power/mem_sleep file.
15For relative_sleep_states=1, the strings "mem", "standby" and "freeze" label the 15It contains strings representing the available modes of system suspend that may
16available non-hibernation sleep states from the deepest to the shallowest, 16be triggered by writing "mem" to /sys/power/state. These modes are "s2idle"
17respectively. In that case, "mem" is always present in /sys/power/state, 17(Suspend-To-Idle), "shallow" (Power-On Suspend) and "deep" (Suspend-To-RAM).
18because there is at least one non-hibernation sleep state in every system. If 18The "s2idle" mode is always available, while the other ones are only available
19the given system supports two non-hibernation sleep states, "standby" is present 19if supported by the platform (if not supported, the strings representing them
20in /sys/power/state in addition to "mem". If the system supports three 20are not present in /sys/power/mem_sleep). The string representing the suspend
21non-hibernation sleep states, "freeze" will be present in /sys/power/state in 21mode to be used subsequently is enclosed in square brackets. Writing one of
22addition to "mem" and "standby". 22the other strings present in /sys/power/mem_sleep to it causes the suspend mode
23 23to be used subsequently to change to the one represented by that string.
24For relative_sleep_states=0, which is the default, the following descriptions 24
25apply. 25Consequently, there are two ways to cause the system to go into the
26 26Suspend-To-Idle sleep state. The first one is to write "freeze" directly to
27state: Suspend-To-Idle 27/sys/power/state. The second one is to write "s2idle" to /sys/power/mem_sleep
28and then to wrtie "mem" to /sys/power/state. Similarly, there are two ways
29to cause the system to go into the Power-On Suspend sleep state (the strings to
30write to the control files in that case are "standby" or "shallow" and "mem",
31respectively) if that state is supported by the platform. In turn, there is
32only one way to cause the system to go into the Suspend-To-RAM state (write
33"deep" into /sys/power/mem_sleep and "mem" into /sys/power/state).
34
35The default suspend mode (ie. the one to be used without writing anything into
36/sys/power/mem_sleep) is either "deep" (if Suspend-To-RAM is supported) or
37"s2idle", but it can be overridden by the value of the "mem_sleep_default"
38parameter in the kernel command line. On some ACPI-based systems, depending on
39the information in the FADT, the default may be "s2idle" even if Suspend-To-RAM
40is supported.
41
42The properties of all of the sleep states are described below.
43
44
45State: Suspend-To-Idle
28ACPI state: S0 46ACPI state: S0
29Label: "freeze" 47Label: "s2idle" ("freeze")
30 48
31This state is a generic, pure software, light-weight, system sleep state. 49This state is a generic, pure software, light-weight, system sleep state.
32It allows more energy to be saved relative to runtime idle by freezing user 50It allows more energy to be saved relative to runtime idle by freezing user
@@ -35,13 +53,13 @@ lower-power than available at run time), such that the processors can
35spend more time in their idle states. 53spend more time in their idle states.
36 54
37This state can be used for platforms without Power-On Suspend/Suspend-to-RAM 55This state can be used for platforms without Power-On Suspend/Suspend-to-RAM
38support, or it can be used in addition to Suspend-to-RAM (memory sleep) 56support, or it can be used in addition to Suspend-to-RAM to provide reduced
39to provide reduced resume latency. It is always supported. 57resume latency. It is always supported.
40 58
41 59
42State: Standby / Power-On Suspend 60State: Standby / Power-On Suspend
43ACPI State: S1 61ACPI State: S1
44Label: "standby" 62Label: "shallow" ("standby")
45 63
46This state, if supported, offers moderate, though real, power savings, while 64This state, if supported, offers moderate, though real, power savings, while
47providing a relatively low-latency transition back to a working system. No 65providing a relatively low-latency transition back to a working system. No
@@ -58,7 +76,7 @@ state.
58 76
59State: Suspend-to-RAM 77State: Suspend-to-RAM
60ACPI State: S3 78ACPI State: S3
61Label: "mem" 79Label: "deep"
62 80
63This state, if supported, offers significant power savings as everything in the 81This state, if supported, offers significant power savings as everything in the
64system is put into a low-power state, except for memory, which should be placed 82system is put into a low-power state, except for memory, which should be placed