--- /dev/null
+From stable-bounces@linux.kernel.org Thu May 25 18:48:58 2006
+Date: Thu, 25 May 2006 18:44:24 -0700
+From: akpm@osdl.org
+To: torvalds@osdl.org
+Cc: benh@kernel.crashing.org, johannes@sipsolutions.net, stable@kernel.org
+Subject: PowerMac: force only suspend-to-disk to be valid
+
+From: Johannes Berg <johannes@sipsolutions.net>
+
+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: Chris Wright <chrisw@sous-sol.org>
+---
+
+ arch/powerpc/platforms/powermac/setup.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- linux-2.6.16.18.orig/arch/powerpc/platforms/powermac/setup.c
++++ linux-2.6.16.18/arch/powerpc/platforms/powermac/setup.c
+@@ -456,11 +456,23 @@ static int pmac_pm_finish(suspend_state_
+ return 0;
+ }
+
++static int pmac_pm_valid(suspend_state_t state)
++{
++ switch (state) {
++ case PM_SUSPEND_DISK:
++ return 1;
++ /* can't do any other states via generic mechanism yet */
++ default:
++ return 0;
++ }
++}
++
+ static struct pm_ops pmac_pm_ops = {
+ .pm_disk_mode = PM_DISK_SHUTDOWN,
+ .prepare = pmac_pm_prepare,
+ .enter = pmac_pm_enter,
+ .finish = pmac_pm_finish,
++ .valid = pmac_pm_valid,
+ };
+
+ #endif /* CONFIG_SOFTWARE_SUSPEND */