diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-03-02 20:33:52 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-03-02 20:33:52 -0500 |
commit | 080e4168c0834ccc853c48259e16a5c556c7ecba (patch) | |
tree | 641a264718c6f1b8bf9525e4e4a073565044cd03 /Documentation | |
parent | bbe08c0a43e2c5ee3a00de68c0e867a08a9aa990 (diff) | |
parent | 9b5e9cb164ee93ae19c4c6593e8188a55481f78b (diff) |
Merge tag 'pm-extra-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull more power management updates deom Rafael Wysocki:
"These fix two bugs introduced by recent power management updates (in
the cpuidle menu governor and intel_pstate) and a few other issues,
clean up things and remove unused code.
Specifics:
- Fix for a cpuidle menu governor problem that started to take an
unnecessary spinlock after one of the recent updates and that did
not play well with the RT patch (Rafael Wysocki).
- Fix for the new intel_pstate operation mode switching feature added
recently that did not reinitialize P-state limits properly when
switching operation modes (Rafael Wysocki).
- Removal of unused global notifiers from the PM QoS framework
(Viresh Kumar).
- Generic power domains framework update to make it handle
asynchronous invocations of PM callbacks in the "noirq" phases of
system suspend/hibernation correctly (Ulf Hansson).
- Two hibernation core cleanups (Rafael Wysocki).
- intel_idle cleanup related to the sysfs interface (Len Brown).
- Off-by-one bug fix in the OPP (Operating Performance Points)
framework (Andrzej Hajda).
- OPP framework's documentation fix (Viresh Kumar).
- cpufreq qoriq driver cleanup (Tang Yuantian).
- Fixes for typos in comments in the device runtime PM framework
(Christophe Jaillet)"
* tag 'pm-extra-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
PM / OPP: Documentation: Fix opp-microvolt in examples
intel_idle: stop exposing platform acronyms in sysfs
cpufreq: intel_pstate: Fix limits issue with operation mode switching
PM / hibernate: Define pr_fmt() and use pr_*() instead of printk()
PM / hibernate: Untangle power_down()
cpuidle: menu: Avoid taking spinlock for accessing QoS values
PM / QoS: Remove global notifiers
PM / runtime: Fix some typos
cpufreq: qoriq: clean up unused code
PM / OPP: fix off-by-one bug in dev_pm_opp_get_max_volt_latency loop
PM / Domains: Power off masters immediately in the power off sequence
PM / Domains: Rename is_async to one_dev_on for genpd_power_off()
PM / Domains: Move genpd_power_off() above genpd_power_on()
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/devicetree/bindings/opp/opp.txt | 44 | ||||
-rw-r--r-- | Documentation/power/pm_qos_interface.txt | 13 | ||||
-rw-r--r-- | Documentation/power/runtime_pm.txt | 6 |
3 files changed, 26 insertions, 37 deletions
diff --git a/Documentation/devicetree/bindings/opp/opp.txt b/Documentation/devicetree/bindings/opp/opp.txt index ecdcfb790704..63725498bd20 100644 --- a/Documentation/devicetree/bindings/opp/opp.txt +++ b/Documentation/devicetree/bindings/opp/opp.txt | |||
@@ -188,14 +188,14 @@ Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together. | |||
188 | 188 | ||
189 | opp@1000000000 { | 189 | opp@1000000000 { |
190 | opp-hz = /bits/ 64 <1000000000>; | 190 | opp-hz = /bits/ 64 <1000000000>; |
191 | opp-microvolt = <970000 975000 985000>; | 191 | opp-microvolt = <975000 970000 985000>; |
192 | opp-microamp = <70000>; | 192 | opp-microamp = <70000>; |
193 | clock-latency-ns = <300000>; | 193 | clock-latency-ns = <300000>; |
194 | opp-suspend; | 194 | opp-suspend; |
195 | }; | 195 | }; |
196 | opp@1100000000 { | 196 | opp@1100000000 { |
197 | opp-hz = /bits/ 64 <1100000000>; | 197 | opp-hz = /bits/ 64 <1100000000>; |
198 | opp-microvolt = <980000 1000000 1010000>; | 198 | opp-microvolt = <1000000 980000 1010000>; |
199 | opp-microamp = <80000>; | 199 | opp-microamp = <80000>; |
200 | clock-latency-ns = <310000>; | 200 | clock-latency-ns = <310000>; |
201 | }; | 201 | }; |
@@ -267,14 +267,14 @@ independently. | |||
267 | 267 | ||
268 | opp@1000000000 { | 268 | opp@1000000000 { |
269 | opp-hz = /bits/ 64 <1000000000>; | 269 | opp-hz = /bits/ 64 <1000000000>; |
270 | opp-microvolt = <970000 975000 985000>; | 270 | opp-microvolt = <975000 970000 985000>; |
271 | opp-microamp = <70000>; | 271 | opp-microamp = <70000>; |
272 | clock-latency-ns = <300000>; | 272 | clock-latency-ns = <300000>; |
273 | opp-suspend; | 273 | opp-suspend; |
274 | }; | 274 | }; |
275 | opp@1100000000 { | 275 | opp@1100000000 { |
276 | opp-hz = /bits/ 64 <1100000000>; | 276 | opp-hz = /bits/ 64 <1100000000>; |
277 | opp-microvolt = <980000 1000000 1010000>; | 277 | opp-microvolt = <1000000 980000 1010000>; |
278 | opp-microamp = <80000>; | 278 | opp-microamp = <80000>; |
279 | clock-latency-ns = <310000>; | 279 | clock-latency-ns = <310000>; |
280 | }; | 280 | }; |
@@ -343,14 +343,14 @@ DVFS state together. | |||
343 | 343 | ||
344 | opp@1000000000 { | 344 | opp@1000000000 { |
345 | opp-hz = /bits/ 64 <1000000000>; | 345 | opp-hz = /bits/ 64 <1000000000>; |
346 | opp-microvolt = <970000 975000 985000>; | 346 | opp-microvolt = <975000 970000 985000>; |
347 | opp-microamp = <70000>; | 347 | opp-microamp = <70000>; |
348 | clock-latency-ns = <300000>; | 348 | clock-latency-ns = <300000>; |
349 | opp-suspend; | 349 | opp-suspend; |
350 | }; | 350 | }; |
351 | opp@1100000000 { | 351 | opp@1100000000 { |
352 | opp-hz = /bits/ 64 <1100000000>; | 352 | opp-hz = /bits/ 64 <1100000000>; |
353 | opp-microvolt = <980000 1000000 1010000>; | 353 | opp-microvolt = <1000000 980000 1010000>; |
354 | opp-microamp = <80000>; | 354 | opp-microamp = <80000>; |
355 | clock-latency-ns = <310000>; | 355 | clock-latency-ns = <310000>; |
356 | }; | 356 | }; |
@@ -369,7 +369,7 @@ DVFS state together. | |||
369 | 369 | ||
370 | opp@1300000000 { | 370 | opp@1300000000 { |
371 | opp-hz = /bits/ 64 <1300000000>; | 371 | opp-hz = /bits/ 64 <1300000000>; |
372 | opp-microvolt = <1045000 1050000 1055000>; | 372 | opp-microvolt = <1050000 1045000 1055000>; |
373 | opp-microamp = <95000>; | 373 | opp-microamp = <95000>; |
374 | clock-latency-ns = <400000>; | 374 | clock-latency-ns = <400000>; |
375 | opp-suspend; | 375 | opp-suspend; |
@@ -382,7 +382,7 @@ DVFS state together. | |||
382 | }; | 382 | }; |
383 | opp@1500000000 { | 383 | opp@1500000000 { |
384 | opp-hz = /bits/ 64 <1500000000>; | 384 | opp-hz = /bits/ 64 <1500000000>; |
385 | opp-microvolt = <1010000 1100000 1110000>; | 385 | opp-microvolt = <1100000 1010000 1110000>; |
386 | opp-microamp = <95000>; | 386 | opp-microamp = <95000>; |
387 | clock-latency-ns = <400000>; | 387 | clock-latency-ns = <400000>; |
388 | turbo-mode; | 388 | turbo-mode; |
@@ -424,9 +424,9 @@ Example 4: Handling multiple regulators | |||
424 | 424 | ||
425 | opp@1000000000 { | 425 | opp@1000000000 { |
426 | opp-hz = /bits/ 64 <1000000000>; | 426 | opp-hz = /bits/ 64 <1000000000>; |
427 | opp-microvolt = <970000 975000 985000>, /* Supply 0 */ | 427 | opp-microvolt = <975000 970000 985000>, /* Supply 0 */ |
428 | <960000 965000 975000>, /* Supply 1 */ | 428 | <965000 960000 975000>, /* Supply 1 */ |
429 | <960000 965000 975000>; /* Supply 2 */ | 429 | <965000 960000 975000>; /* Supply 2 */ |
430 | opp-microamp = <70000>, /* Supply 0 */ | 430 | opp-microamp = <70000>, /* Supply 0 */ |
431 | <70000>, /* Supply 1 */ | 431 | <70000>, /* Supply 1 */ |
432 | <70000>; /* Supply 2 */ | 432 | <70000>; /* Supply 2 */ |
@@ -437,9 +437,9 @@ Example 4: Handling multiple regulators | |||
437 | 437 | ||
438 | opp@1000000000 { | 438 | opp@1000000000 { |
439 | opp-hz = /bits/ 64 <1000000000>; | 439 | opp-hz = /bits/ 64 <1000000000>; |
440 | opp-microvolt = <970000 975000 985000>, /* Supply 0 */ | 440 | opp-microvolt = <975000 970000 985000>, /* Supply 0 */ |
441 | <960000 965000 975000>, /* Supply 1 */ | 441 | <965000 960000 975000>, /* Supply 1 */ |
442 | <960000 965000 975000>; /* Supply 2 */ | 442 | <965000 960000 975000>; /* Supply 2 */ |
443 | opp-microamp = <70000>, /* Supply 0 */ | 443 | opp-microamp = <70000>, /* Supply 0 */ |
444 | <0>, /* Supply 1 doesn't need this */ | 444 | <0>, /* Supply 1 doesn't need this */ |
445 | <70000>; /* Supply 2 */ | 445 | <70000>; /* Supply 2 */ |
@@ -474,7 +474,7 @@ Example 5: opp-supported-hw | |||
474 | */ | 474 | */ |
475 | opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF> | 475 | opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF> |
476 | opp-hz = /bits/ 64 <600000000>; | 476 | opp-hz = /bits/ 64 <600000000>; |
477 | opp-microvolt = <900000 915000 925000>; | 477 | opp-microvolt = <915000 900000 925000>; |
478 | ... | 478 | ... |
479 | }; | 479 | }; |
480 | 480 | ||
@@ -487,7 +487,7 @@ Example 5: opp-supported-hw | |||
487 | */ | 487 | */ |
488 | opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0> | 488 | opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0> |
489 | opp-hz = /bits/ 64 <800000000>; | 489 | opp-hz = /bits/ 64 <800000000>; |
490 | opp-microvolt = <900000 915000 925000>; | 490 | opp-microvolt = <915000 900000 925000>; |
491 | ... | 491 | ... |
492 | }; | 492 | }; |
493 | }; | 493 | }; |
@@ -512,18 +512,18 @@ Example 6: opp-microvolt-<name>, opp-microamp-<name>: | |||
512 | 512 | ||
513 | opp@1000000000 { | 513 | opp@1000000000 { |
514 | opp-hz = /bits/ 64 <1000000000>; | 514 | opp-hz = /bits/ 64 <1000000000>; |
515 | opp-microvolt-slow = <900000 915000 925000>; | 515 | opp-microvolt-slow = <915000 900000 925000>; |
516 | opp-microvolt-fast = <970000 975000 985000>; | 516 | opp-microvolt-fast = <975000 970000 985000>; |
517 | opp-microamp-slow = <70000>; | 517 | opp-microamp-slow = <70000>; |
518 | opp-microamp-fast = <71000>; | 518 | opp-microamp-fast = <71000>; |
519 | }; | 519 | }; |
520 | 520 | ||
521 | opp@1200000000 { | 521 | opp@1200000000 { |
522 | opp-hz = /bits/ 64 <1200000000>; | 522 | opp-hz = /bits/ 64 <1200000000>; |
523 | opp-microvolt-slow = <900000 915000 925000>, /* Supply vcc0 */ | 523 | opp-microvolt-slow = <915000 900000 925000>, /* Supply vcc0 */ |
524 | <910000 925000 935000>; /* Supply vcc1 */ | 524 | <925000 910000 935000>; /* Supply vcc1 */ |
525 | opp-microvolt-fast = <970000 975000 985000>, /* Supply vcc0 */ | 525 | opp-microvolt-fast = <975000 970000 985000>, /* Supply vcc0 */ |
526 | <960000 965000 975000>; /* Supply vcc1 */ | 526 | <965000 960000 975000>; /* Supply vcc1 */ |
527 | opp-microamp = <70000>; /* Will be used for both slow/fast */ | 527 | opp-microamp = <70000>; /* Will be used for both slow/fast */ |
528 | }; | 528 | }; |
529 | }; | 529 | }; |
diff --git a/Documentation/power/pm_qos_interface.txt b/Documentation/power/pm_qos_interface.txt index 129f7c0e1483..21d2d48f87a2 100644 --- a/Documentation/power/pm_qos_interface.txt +++ b/Documentation/power/pm_qos_interface.txt | |||
@@ -163,8 +163,7 @@ of flags and remove sysfs attributes pm_qos_no_power_off and pm_qos_remote_wakeu | |||
163 | under the device's power directory. | 163 | under the device's power directory. |
164 | 164 | ||
165 | Notification mechanisms: | 165 | Notification mechanisms: |
166 | The per-device PM QoS framework has 2 different and distinct notification trees: | 166 | The per-device PM QoS framework has a per-device notification tree. |
167 | a per-device notification tree and a global notification tree. | ||
168 | 167 | ||
169 | int dev_pm_qos_add_notifier(device, notifier): | 168 | int dev_pm_qos_add_notifier(device, notifier): |
170 | Adds a notification callback function for the device. | 169 | Adds a notification callback function for the device. |
@@ -174,16 +173,6 @@ is changed (for resume latency device PM QoS only). | |||
174 | int dev_pm_qos_remove_notifier(device, notifier): | 173 | int dev_pm_qos_remove_notifier(device, notifier): |
175 | Removes the notification callback function for the device. | 174 | Removes the notification callback function for the device. |
176 | 175 | ||
177 | int dev_pm_qos_add_global_notifier(notifier): | ||
178 | Adds a notification callback function in the global notification tree of the | ||
179 | framework. | ||
180 | The callback is called when the aggregated value for any device is changed | ||
181 | (for resume latency device PM QoS only). | ||
182 | |||
183 | int dev_pm_qos_remove_global_notifier(notifier): | ||
184 | Removes the notification callback function from the global notification tree | ||
185 | of the framework. | ||
186 | |||
187 | 176 | ||
188 | Active state latency tolerance | 177 | Active state latency tolerance |
189 | 178 | ||
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt index 4870980e967e..64546eb9a16a 100644 --- a/Documentation/power/runtime_pm.txt +++ b/Documentation/power/runtime_pm.txt | |||
@@ -100,7 +100,7 @@ knows what to do to handle the device). | |||
100 | * If the suspend callback returns an error code different from -EBUSY and | 100 | * If the suspend callback returns an error code different from -EBUSY and |
101 | -EAGAIN, the PM core regards this as a fatal error and will refuse to run | 101 | -EAGAIN, the PM core regards this as a fatal error and will refuse to run |
102 | the helper functions described in Section 4 for the device until its status | 102 | the helper functions described in Section 4 for the device until its status |
103 | is directly set to either'active', or 'suspended' (the PM core provides | 103 | is directly set to either 'active', or 'suspended' (the PM core provides |
104 | special helper functions for this purpose). | 104 | special helper functions for this purpose). |
105 | 105 | ||
106 | In particular, if the driver requires remote wakeup capability (i.e. hardware | 106 | In particular, if the driver requires remote wakeup capability (i.e. hardware |
@@ -217,7 +217,7 @@ defined in include/linux/pm.h: | |||
217 | one to complete | 217 | one to complete |
218 | 218 | ||
219 | spinlock_t lock; | 219 | spinlock_t lock; |
220 | - lock used for synchronisation | 220 | - lock used for synchronization |
221 | 221 | ||
222 | atomic_t usage_count; | 222 | atomic_t usage_count; |
223 | - the usage counter of the device | 223 | - the usage counter of the device |
@@ -565,7 +565,7 @@ appropriate to ensure that the device is not put back to sleep during the | |||
565 | probe. This can happen with systems such as the network device layer. | 565 | probe. This can happen with systems such as the network device layer. |
566 | 566 | ||
567 | It may be desirable to suspend the device once ->probe() has finished. | 567 | It may be desirable to suspend the device once ->probe() has finished. |
568 | Therefore the driver core uses the asyncronous pm_request_idle() to submit a | 568 | Therefore the driver core uses the asynchronous pm_request_idle() to submit a |
569 | request to execute the subsystem-level idle callback for the device at that | 569 | request to execute the subsystem-level idle callback for the device at that |
570 | time. A driver that makes use of the runtime autosuspend feature, may want to | 570 | time. A driver that makes use of the runtime autosuspend feature, may want to |
571 | update the last busy mark before returning from ->probe(). | 571 | update the last busy mark before returning from ->probe(). |