diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-05 17:54:18 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-05 17:54:18 -0700 |
commit | 8110efc64c4790cd1bf7e30f080e5ba3faa7cb85 (patch) | |
tree | 708c2a1ef6bebce8eda9676c554bea366547678e /Documentation/power/runtime_pm.txt | |
parent | 06d8eb1b7d1eb34c76538dab791bc14136ebbc8f (diff) | |
parent | d6cc76856d353a3a9c43bead33210b9216dce332 (diff) |
Merge branch 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
* 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
PM / Freezer: Revert 27920651fe "PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too"
PM / Freezer: Reimplement wait_event_freezekillable using freezer_do_not_count/freezer_count
USB: Update last_busy time after autosuspend fails
PM / Runtime: Automatically retry failed autosuspends
PM / QoS: Remove redundant check
PM / OPP: Fix build when CONFIG_PM_OPP is not set
PM / Runtime: Fix runtime accounting calculation error
PM / Sleep: Update freezer documentation
PM / Sleep: Remove unused symbol 'suspend_cpu_hotplug'
PM / Sleep: Fix race between CPU hotplug and freezer
ACPI / PM: Add Sony VPCEB17FX to nonvs blacklist
Diffstat (limited to 'Documentation/power/runtime_pm.txt')
-rw-r--r-- | Documentation/power/runtime_pm.txt | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt index 0e856088db7c..5336149f831b 100644 --- a/Documentation/power/runtime_pm.txt +++ b/Documentation/power/runtime_pm.txt @@ -789,6 +789,16 @@ will behave normally, not taking the autosuspend delay into account. Similarly, if the power.use_autosuspend field isn't set then the autosuspend helper functions will behave just like the non-autosuspend counterparts. +Under some circumstances a driver or subsystem may want to prevent a device +from autosuspending immediately, even though the usage counter is zero and the +autosuspend delay time has expired. If the ->runtime_suspend() callback +returns -EAGAIN or -EBUSY, and if the next autosuspend delay expiration time is +in the future (as it normally would be if the callback invoked +pm_runtime_mark_last_busy()), the PM core will automatically reschedule the +autosuspend. The ->runtime_suspend() callback can't do this rescheduling +itself because no suspend requests of any kind are accepted while the device is +suspending (i.e., while the callback is running). + The implementation is well suited for asynchronous use in interrupt contexts. However such use inevitably involves races, because the PM core can't synchronize ->runtime_suspend() callbacks with the arrival of I/O requests. |