diff options
| -rw-r--r-- | arch/powerpc/kernel/ibmebus.c | 6 | ||||
| -rw-r--r-- | arch/x86/xen/Kconfig | 1 | ||||
| -rw-r--r-- | drivers/amba/bus.c | 6 | ||||
| -rw-r--r-- | drivers/base/platform.c | 6 | ||||
| -rw-r--r-- | drivers/base/power/main.c | 8 | ||||
| -rw-r--r-- | drivers/pci/pci-driver.c | 6 | ||||
| -rw-r--r-- | drivers/xen/manage.c | 6 | ||||
| -rw-r--r-- | include/linux/suspend.h | 11 | ||||
| -rw-r--r-- | kernel/power/Kconfig | 6 | 
9 files changed, 28 insertions, 28 deletions
| diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index c00d4ca1ee15..28581f1ad2c0 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c @@ -527,7 +527,7 @@ static int ibmebus_bus_pm_resume_noirq(struct device *dev)  #endif /* !CONFIG_SUSPEND */ -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  static int ibmebus_bus_pm_freeze(struct device *dev)  { @@ -665,7 +665,7 @@ static int ibmebus_bus_pm_restore_noirq(struct device *dev)  	return ret;  } -#else /* !CONFIG_HIBERNATION */ +#else /* !CONFIG_HIBERNATE_CALLBACKS */  #define ibmebus_bus_pm_freeze		NULL  #define ibmebus_bus_pm_thaw		NULL @@ -676,7 +676,7 @@ static int ibmebus_bus_pm_restore_noirq(struct device *dev)  #define ibmebus_bus_pm_poweroff_noirq	NULL  #define ibmebus_bus_pm_restore_noirq	NULL -#endif /* !CONFIG_HIBERNATION */ +#endif /* !CONFIG_HIBERNATE_CALLBACKS */  static struct dev_pm_ops ibmebus_bus_dev_pm_ops = {  	.prepare = ibmebus_bus_pm_prepare, diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig index 1c7121ba18ff..5cc821cb2e09 100644 --- a/arch/x86/xen/Kconfig +++ b/arch/x86/xen/Kconfig @@ -39,6 +39,7 @@ config XEN_MAX_DOMAIN_MEMORY  config XEN_SAVE_RESTORE         bool         depends on XEN +       select HIBERNATE_CALLBACKS         default y  config XEN_DEBUG_FS diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index 821040503154..7025593a58c8 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -214,7 +214,7 @@ static int amba_pm_resume_noirq(struct device *dev)  #endif /* !CONFIG_SUSPEND */ -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  static int amba_pm_freeze(struct device *dev)  { @@ -352,7 +352,7 @@ static int amba_pm_restore_noirq(struct device *dev)  	return ret;  } -#else /* !CONFIG_HIBERNATION */ +#else /* !CONFIG_HIBERNATE_CALLBACKS */  #define amba_pm_freeze		NULL  #define amba_pm_thaw		NULL @@ -363,7 +363,7 @@ static int amba_pm_restore_noirq(struct device *dev)  #define amba_pm_poweroff_noirq	NULL  #define amba_pm_restore_noirq	NULL -#endif /* !CONFIG_HIBERNATION */ +#endif /* !CONFIG_HIBERNATE_CALLBACKS */  #ifdef CONFIG_PM diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 6c3a2bdc527a..9e0e4fc24c46 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -772,7 +772,7 @@ int __weak platform_pm_resume_noirq(struct device *dev)  #endif /* !CONFIG_SUSPEND */ -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  static int platform_pm_freeze(struct device *dev)  { @@ -910,7 +910,7 @@ static int platform_pm_restore_noirq(struct device *dev)  	return ret;  } -#else /* !CONFIG_HIBERNATION */ +#else /* !CONFIG_HIBERNATE_CALLBACKS */  #define platform_pm_freeze		NULL  #define platform_pm_thaw		NULL @@ -921,7 +921,7 @@ static int platform_pm_restore_noirq(struct device *dev)  #define platform_pm_poweroff_noirq	NULL  #define platform_pm_restore_noirq	NULL -#endif /* !CONFIG_HIBERNATION */ +#endif /* !CONFIG_HIBERNATE_CALLBACKS */  #ifdef CONFIG_PM_RUNTIME diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 052dc53eef38..fbc5b6e7c591 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -233,7 +233,7 @@ static int pm_op(struct device *dev,  		}  		break;  #endif /* CONFIG_SUSPEND */ -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  	case PM_EVENT_FREEZE:  	case PM_EVENT_QUIESCE:  		if (ops->freeze) { @@ -260,7 +260,7 @@ static int pm_op(struct device *dev,  			suspend_report_result(ops->restore, error);  		}  		break; -#endif /* CONFIG_HIBERNATION */ +#endif /* CONFIG_HIBERNATE_CALLBACKS */  	default:  		error = -EINVAL;  	} @@ -308,7 +308,7 @@ static int pm_noirq_op(struct device *dev,  		}  		break;  #endif /* CONFIG_SUSPEND */ -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  	case PM_EVENT_FREEZE:  	case PM_EVENT_QUIESCE:  		if (ops->freeze_noirq) { @@ -335,7 +335,7 @@ static int pm_noirq_op(struct device *dev,  			suspend_report_result(ops->restore_noirq, error);  		}  		break; -#endif /* CONFIG_HIBERNATION */ +#endif /* CONFIG_HIBERNATE_CALLBACKS */  	default:  		error = -EINVAL;  	} diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index d86ea8b01137..135df164a4c1 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -781,7 +781,7 @@ static int pci_pm_resume(struct device *dev)  #endif /* !CONFIG_SUSPEND */ -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  static int pci_pm_freeze(struct device *dev)  { @@ -970,7 +970,7 @@ static int pci_pm_restore(struct device *dev)  	return error;  } -#else /* !CONFIG_HIBERNATION */ +#else /* !CONFIG_HIBERNATE_CALLBACKS */  #define pci_pm_freeze		NULL  #define pci_pm_freeze_noirq	NULL @@ -981,7 +981,7 @@ static int pci_pm_restore(struct device *dev)  #define pci_pm_restore		NULL  #define pci_pm_restore_noirq	NULL -#endif /* !CONFIG_HIBERNATION */ +#endif /* !CONFIG_HIBERNATE_CALLBACKS */  #ifdef CONFIG_PM_RUNTIME diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index 95143dd6904d..1ac94125bf93 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c @@ -61,7 +61,7 @@ static void xen_post_suspend(int cancelled)  	xen_mm_unpin_all();  } -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  static int xen_suspend(void *data)  {  	struct suspend_info *si = data; @@ -173,7 +173,7 @@ out:  #endif  	shutting_down = SHUTDOWN_INVALID;  } -#endif	/* CONFIG_HIBERNATION */ +#endif	/* CONFIG_HIBERNATE_CALLBACKS */  struct shutdown_handler {  	const char *command; @@ -202,7 +202,7 @@ static void shutdown_handler(struct xenbus_watch *watch,  		{ "poweroff",	do_poweroff },  		{ "halt",	do_poweroff },  		{ "reboot",	do_reboot   }, -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_CALLBACKS  		{ "suspend",	do_suspend  },  #endif  		{NULL, NULL}, diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 5a89e3612875..083ffea7ba18 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h @@ -249,6 +249,8 @@ extern void hibernation_set_ops(const struct platform_hibernation_ops *ops);  extern int hibernate(void);  extern bool system_entering_hibernation(void);  #else /* CONFIG_HIBERNATION */ +static inline void register_nosave_region(unsigned long b, unsigned long e) {} +static inline void register_nosave_region_late(unsigned long b, unsigned long e) {}  static inline int swsusp_page_is_forbidden(struct page *p) { return 0; }  static inline void swsusp_set_page_free(struct page *p) {}  static inline void swsusp_unset_page_free(struct page *p) {} @@ -297,14 +299,7 @@ static inline bool pm_wakeup_pending(void) { return false; }  extern struct mutex pm_mutex; -#ifndef CONFIG_HIBERNATION -static inline void register_nosave_region(unsigned long b, unsigned long e) -{ -} -static inline void register_nosave_region_late(unsigned long b, unsigned long e) -{ -} - +#ifndef CONFIG_HIBERNATE_CALLBACKS  static inline void lock_system_sleep(void) {}  static inline void unlock_system_sleep(void) {} diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig index 4603f08dc47b..6de9a8fc3417 100644 --- a/kernel/power/Kconfig +++ b/kernel/power/Kconfig @@ -18,9 +18,13 @@ config SUSPEND_FREEZER  	  Turning OFF this setting is NOT recommended! If in doubt, say Y. +config HIBERNATE_CALLBACKS +	bool +  config HIBERNATION  	bool "Hibernation (aka 'suspend to disk')"  	depends on SWAP && ARCH_HIBERNATION_POSSIBLE +	select HIBERNATE_CALLBACKS  	select LZO_COMPRESS  	select LZO_DECOMPRESS  	---help--- @@ -85,7 +89,7 @@ config PM_STD_PARTITION  config PM_SLEEP  	def_bool y -	depends on SUSPEND || HIBERNATION || XEN_SAVE_RESTORE +	depends on SUSPEND || HIBERNATE_CALLBACKS  config PM_SLEEP_SMP  	def_bool y | 
