Skip to content

Commit

Permalink
power management: force pm_ops.valid callback to be assigned
Browse files Browse the repository at this point in the history
This patch changes the docs and behaviour from "all states valid" to "no
states valid" if no .valid callback is assigned.  Users of pm_ops that only
need mem sleep can assign pm_valid_only_mem without any overhead, others
will require more elaborate callbacks.

Now that all users of pm_ops have a .valid callback this is a safe thing to
do and prevents things from getting messy again as they were before.

Signed-off-by: Johannes Berg <[email protected]>
Acked-by: Pavel Machek <[email protected]>
Looks-okay-to: Rafael J. Wysocki <[email protected]>
Cc: <[email protected]>
Cc: Greg KH <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
jmberg authored and Linus Torvalds committed Apr 30, 2007
1 parent e8c9c50 commit 9684e51
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
12 changes: 6 additions & 6 deletions include/linux/pm.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,12 @@ typedef int __bitwise suspend_disk_method_t;
* struct pm_ops - Callbacks for managing platform dependent suspend states.
* @valid: Callback to determine whether the given state can be entered.
* If %CONFIG_SOFTWARE_SUSPEND is set then %PM_SUSPEND_DISK is
* always valid and never passed to this call.
* If not assigned, all suspend states are advertised as valid
* in /sys/power/state (but can still be rejected by prepare or enter.)
* Since new states can be added for other platforms, you should
* assign this callback. There is a %pm_valid_only_mem function
* available if you only implemented mem sleep.
* always valid and never passed to this call. If not assigned,
* no suspend states are valid.
* Valid states are advertised in /sys/power/state but can still
* be rejected by prepare or enter if the conditions aren't right.
* There is a %pm_valid_only_mem function available that can be assigned
* to this if you only implement mem sleep.
*
* @prepare: Prepare the platform for the given suspend state. Can return a
* negative error code if necessary.
Expand Down
4 changes: 2 additions & 2 deletions kernel/power/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,8 @@ static inline int valid_state(suspend_state_t state)

/* all other states need lowlevel support and need to be
* valid to the lowlevel implementation, no valid callback
* implies that all are valid. */
if (!pm_ops || (pm_ops->valid && !pm_ops->valid(state)))
* implies that none are valid. */
if (!pm_ops || !pm_ops->valid || !pm_ops->valid(state))
return 0;
return 1;
}
Expand Down

0 comments on commit 9684e51

Please sign in to comment.