diff options
| author | Johannes Berg <johannes@sipsolutions.net> | 2006-05-25 21:44:24 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-05-26 14:55:46 -0400 |
| commit | 0fba3a1f39f8b0a50b56c8b068fa52131cbc84c2 (patch) | |
| tree | 35b5b68cb783305fa783988cbb7042531cb8a316 | |
| parent | 3ac8141366932a74fd8620afaebd66960c91196d (diff) | |
[PATCH] PowerMac: force only suspend-to-disk to be valid
For a very long time, echoing 'standby' or 'mem' into /sys/power/state has
killed the machine on powerpc. This patch fixes that.
This patch adds the .valid callback to pm_ops on PowerMac so that only the
suspend to disk state can be entered. Note that just returning 0 would
suffice since the upper layers don't pass PM_SUSPEND_DISK down, but we
handle it there regardless just in case that changes.
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | arch/powerpc/platforms/powermac/setup.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index 4d15e396655c..b9200fb07815 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c | |||
| @@ -463,11 +463,23 @@ static int pmac_pm_finish(suspend_state_t state) | |||
| 463 | return 0; | 463 | return 0; |
| 464 | } | 464 | } |
| 465 | 465 | ||
| 466 | static int pmac_pm_valid(suspend_state_t state) | ||
| 467 | { | ||
| 468 | switch (state) { | ||
| 469 | case PM_SUSPEND_DISK: | ||
| 470 | return 1; | ||
| 471 | /* can't do any other states via generic mechanism yet */ | ||
| 472 | default: | ||
| 473 | return 0; | ||
| 474 | } | ||
| 475 | } | ||
| 476 | |||
| 466 | static struct pm_ops pmac_pm_ops = { | 477 | static struct pm_ops pmac_pm_ops = { |
| 467 | .pm_disk_mode = PM_DISK_SHUTDOWN, | 478 | .pm_disk_mode = PM_DISK_SHUTDOWN, |
| 468 | .prepare = pmac_pm_prepare, | 479 | .prepare = pmac_pm_prepare, |
| 469 | .enter = pmac_pm_enter, | 480 | .enter = pmac_pm_enter, |
| 470 | .finish = pmac_pm_finish, | 481 | .finish = pmac_pm_finish, |
| 482 | .valid = pmac_pm_valid, | ||
| 471 | }; | 483 | }; |
| 472 | 484 | ||
| 473 | #endif /* CONFIG_SOFTWARE_SUSPEND */ | 485 | #endif /* CONFIG_SOFTWARE_SUSPEND */ |
