static inline int cpu_is_offline(int cpu) { return 0; }
 #endif         /* CONFIG_HOTPLUG_CPU */
 
-#ifdef CONFIG_SUSPEND_SMP
+#ifdef CONFIG_PM_SLEEP_SMP
 extern int suspend_cpu_hotplug;
 
 extern int disable_nonboot_cpus(void);
 extern void enable_nonboot_cpus(void);
-#else
+#else /* !CONFIG_PM_SLEEP_SMP */
 #define suspend_cpu_hotplug    0
 
 static inline int disable_nonboot_cpus(void) { return 0; }
 static inline void enable_nonboot_cpus(void) {}
-#endif
+#endif /* !CONFIG_PM_SLEEP_SMP */
 
 #endif /* _LINUX_CPU_H_ */
 
        return err;
 }
 
-#ifdef CONFIG_SUSPEND_SMP
+#ifdef CONFIG_PM_SLEEP_SMP
 static cpumask_t frozen_cpus;
 
 int disable_nonboot_cpus(void)
 out:
        mutex_unlock(&cpu_add_remove_lock);
 }
-#endif
+#endif /* CONFIG_PM_SLEEP_SMP */
 
        CAUTION: this option will cause your machine's real-time clock to be
        set to an invalid time after a resume.
 
-config SUSPEND_SMP_POSSIBLE
-       bool
-       depends on (X86 && !X86_VOYAGER) || (PPC64 && (PPC_PSERIES || PPC_PMAC))
-       depends on SMP
-       default y
-
-config SUSPEND_SMP
+config PM_SLEEP_SMP
        bool
-       depends on SUSPEND_SMP_POSSIBLE && PM_SLEEP
+       depends on SUSPEND_SMP_POSSIBLE || HIBERNATION_SMP_POSSIBLE
+       depends on PM_SLEEP
        select HOTPLUG_CPU
        default y
 
        depends on SUSPEND || HIBERNATION
        default y
 
+config SUSPEND_UP_POSSIBLE
+       bool
+       depends on (X86 && !X86_VOYAGER) || PPC || ARM || BLACKFIN || MIPS \
+                  || SUPERH || FRV
+       depends on !SMP
+       default y
+
+config SUSPEND_SMP_POSSIBLE
+       bool
+       depends on (X86 && !X86_VOYAGER) \
+                  || (PPC && (PPC_PSERIES || PPC_PMAC)) || ARM
+       depends on SMP
+       default y
+
 config SUSPEND
        bool "Suspend to RAM and standby"
        depends on PM
-       depends on !SMP || SUSPEND_SMP_POSSIBLE
+       depends on SUSPEND_UP_POSSIBLE || SUSPEND_SMP_POSSIBLE
        default y
        ---help---
          Allow the system to enter sleep states in which main memory is
          powered and thus its contents are preserved, such as the
          suspend-to-RAM state (i.e. the ACPI S3 state).
 
+config HIBERNATION_UP_POSSIBLE
+       bool
+       depends on X86 || PPC64_SWSUSP || FRV || PPC32
+       depends on !SMP
+       default y
+
+config HIBERNATION_SMP_POSSIBLE
+       bool
+       depends on (X86 && !X86_VOYAGER) || PPC64_SWSUSP
+       depends on SMP
+       default y
+
 config HIBERNATION
        bool "Hibernation (aka 'suspend to disk')"
        depends on PM && SWAP
-       depends on ((X86 || PPC64_SWSUSP || FRV || PPC32) && !SMP) || SUSPEND_SMP_POSSIBLE
+       depends on HIBERNATION_UP_POSSIBLE || HIBERNATION_SMP_POSSIBLE
        ---help---
          Enable the suspend to disk (STD) functionality, which is usually
          called "hibernation" in user interfaces.  STD checkpoints the