Skip to content

Commit

Permalink
[PATCH] fix swsusp on machines not supporting S4
Browse files Browse the repository at this point in the history
Fix swsusp on machines not supporting S4.  With recent changes, it is not
possible to trigger it using /sys filesystem.  Swsusp does not really need
any support from low-level code, it is possible to reboot or halt at the
end of suspend.

Signed-off-by: Pavel Machek <pavel@suse.cz>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
pavelmachek authored and Linus Torvalds committed Nov 30, 2005
1 parent d91b14c commit 123d3c1
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions kernel/power/main.c
Expand Up @@ -24,7 +24,7 @@

DECLARE_MUTEX(pm_sem);

struct pm_ops * pm_ops = NULL;
struct pm_ops *pm_ops;
suspend_disk_method_t pm_disk_mode = PM_DISK_SHUTDOWN;

/**
Expand Down Expand Up @@ -151,6 +151,18 @@ static char *pm_states[PM_SUSPEND_MAX] = {
#endif
};

static inline int valid_state(suspend_state_t state)
{
/* Suspend-to-disk does not really need low-level support.
* It can work with reboot if needed. */
if (state == PM_SUSPEND_DISK)
return 1;

if (pm_ops && pm_ops->valid && !pm_ops->valid(state))
return 0;
return 1;
}


/**
* enter_state - Do common work of entering low-power state.
Expand All @@ -167,7 +179,7 @@ static int enter_state(suspend_state_t state)
{
int error;

if (pm_ops && pm_ops->valid && !pm_ops->valid(state))
if (!valid_state(state))
return -ENODEV;
if (down_trylock(&pm_sem))
return -EBUSY;
Expand Down Expand Up @@ -238,9 +250,8 @@ static ssize_t state_show(struct subsystem * subsys, char * buf)
char * s = buf;

for (i = 0; i < PM_SUSPEND_MAX; i++) {
if (pm_states[i] && pm_ops && (!pm_ops->valid
||(pm_ops->valid && pm_ops->valid(i))))
s += sprintf(s,"%s ",pm_states[i]);
if (pm_states[i] && valid_state(i))
s += sprintf(s,"%s ", pm_states[i]);
}
s += sprintf(s,"\n");
return (s - buf);
Expand Down

0 comments on commit 123d3c1

Please sign in to comment.