diff options
| -rw-r--r-- | include/linux/suspend.h | 2 | ||||
| -rw-r--r-- | kernel/power/disk.c | 10 | 
2 files changed, 12 insertions, 0 deletions
| diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 2b409c44db8..c7d9bb1832b 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
| @@ -237,6 +237,7 @@ extern int hibernate_nvs_alloc(void); | |||
| 237 | extern void hibernate_nvs_free(void); | 237 | extern void hibernate_nvs_free(void); | 
| 238 | extern void hibernate_nvs_save(void); | 238 | extern void hibernate_nvs_save(void); | 
| 239 | extern void hibernate_nvs_restore(void); | 239 | extern void hibernate_nvs_restore(void); | 
| 240 | extern bool system_entering_hibernation(void); | ||
| 240 | #else /* CONFIG_HIBERNATION */ | 241 | #else /* CONFIG_HIBERNATION */ | 
| 241 | static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } | 242 | static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } | 
| 242 | static inline void swsusp_set_page_free(struct page *p) {} | 243 | static inline void swsusp_set_page_free(struct page *p) {} | 
| @@ -252,6 +253,7 @@ static inline int hibernate_nvs_alloc(void) { return 0; } | |||
| 252 | static inline void hibernate_nvs_free(void) {} | 253 | static inline void hibernate_nvs_free(void) {} | 
| 253 | static inline void hibernate_nvs_save(void) {} | 254 | static inline void hibernate_nvs_save(void) {} | 
| 254 | static inline void hibernate_nvs_restore(void) {} | 255 | static inline void hibernate_nvs_restore(void) {} | 
| 256 | static inline bool system_entering_hibernation(void) { return false; } | ||
| 255 | #endif /* CONFIG_HIBERNATION */ | 257 | #endif /* CONFIG_HIBERNATION */ | 
| 256 | 258 | ||
| 257 | #ifdef CONFIG_PM_SLEEP | 259 | #ifdef CONFIG_PM_SLEEP | 
| diff --git a/kernel/power/disk.c b/kernel/power/disk.c index 45e8541ab7e..432ee575c9e 100644 --- a/kernel/power/disk.c +++ b/kernel/power/disk.c | |||
| @@ -71,6 +71,14 @@ void hibernation_set_ops(struct platform_hibernation_ops *ops) | |||
| 71 | mutex_unlock(&pm_mutex); | 71 | mutex_unlock(&pm_mutex); | 
| 72 | } | 72 | } | 
| 73 | 73 | ||
| 74 | static bool entering_platform_hibernation; | ||
| 75 | |||
| 76 | bool system_entering_hibernation(void) | ||
| 77 | { | ||
| 78 | return entering_platform_hibernation; | ||
| 79 | } | ||
| 80 | EXPORT_SYMBOL(system_entering_hibernation); | ||
| 81 | |||
| 74 | #ifdef CONFIG_PM_DEBUG | 82 | #ifdef CONFIG_PM_DEBUG | 
| 75 | static void hibernation_debug_sleep(void) | 83 | static void hibernation_debug_sleep(void) | 
| 76 | { | 84 | { | 
| @@ -411,6 +419,7 @@ int hibernation_platform_enter(void) | |||
| 411 | if (error) | 419 | if (error) | 
| 412 | goto Close; | 420 | goto Close; | 
| 413 | 421 | ||
| 422 | entering_platform_hibernation = true; | ||
| 414 | suspend_console(); | 423 | suspend_console(); | 
| 415 | error = device_suspend(PMSG_HIBERNATE); | 424 | error = device_suspend(PMSG_HIBERNATE); | 
| 416 | if (error) { | 425 | if (error) { | 
| @@ -445,6 +454,7 @@ int hibernation_platform_enter(void) | |||
| 445 | Finish: | 454 | Finish: | 
| 446 | hibernation_ops->finish(); | 455 | hibernation_ops->finish(); | 
| 447 | Resume_devices: | 456 | Resume_devices: | 
| 457 | entering_platform_hibernation = false; | ||
| 448 | device_resume(PMSG_RESTORE); | 458 | device_resume(PMSG_RESTORE); | 
| 449 | resume_console(); | 459 | resume_console(); | 
| 450 | Close: | 460 | Close: | 
