|
@@ -69,14 +69,14 @@ void hibernation_set_ops(const struct platform_hibernation_ops *ops)
|
|
|
WARN_ON(1);
|
|
|
return;
|
|
|
}
|
|
|
- mutex_lock(&pm_mutex);
|
|
|
+ lock_system_sleep();
|
|
|
hibernation_ops = ops;
|
|
|
if (ops)
|
|
|
hibernation_mode = HIBERNATION_PLATFORM;
|
|
|
else if (hibernation_mode == HIBERNATION_PLATFORM)
|
|
|
hibernation_mode = HIBERNATION_SHUTDOWN;
|
|
|
|
|
|
- mutex_unlock(&pm_mutex);
|
|
|
+ unlock_system_sleep();
|
|
|
}
|
|
|
|
|
|
static bool entering_platform_hibernation;
|
|
@@ -597,7 +597,7 @@ int hibernate(void)
|
|
|
{
|
|
|
int error;
|
|
|
|
|
|
- mutex_lock(&pm_mutex);
|
|
|
+ lock_system_sleep();
|
|
|
/* The snapshot device should not be opened while we're running */
|
|
|
if (!atomic_add_unless(&snapshot_device_available, -1, 0)) {
|
|
|
error = -EBUSY;
|
|
@@ -665,7 +665,7 @@ int hibernate(void)
|
|
|
pm_restore_console();
|
|
|
atomic_inc(&snapshot_device_available);
|
|
|
Unlock:
|
|
|
- mutex_unlock(&pm_mutex);
|
|
|
+ unlock_system_sleep();
|
|
|
return error;
|
|
|
}
|
|
|
|
|
@@ -893,7 +893,7 @@ static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
|
|
|
p = memchr(buf, '\n', n);
|
|
|
len = p ? p - buf : n;
|
|
|
|
|
|
- mutex_lock(&pm_mutex);
|
|
|
+ lock_system_sleep();
|
|
|
for (i = HIBERNATION_FIRST; i <= HIBERNATION_MAX; i++) {
|
|
|
if (len == strlen(hibernation_modes[i])
|
|
|
&& !strncmp(buf, hibernation_modes[i], len)) {
|
|
@@ -919,7 +919,7 @@ static ssize_t disk_store(struct kobject *kobj, struct kobj_attribute *attr,
|
|
|
if (!error)
|
|
|
pr_debug("PM: Hibernation mode set to '%s'\n",
|
|
|
hibernation_modes[mode]);
|
|
|
- mutex_unlock(&pm_mutex);
|
|
|
+ unlock_system_sleep();
|
|
|
return error ? error : n;
|
|
|
}
|
|
|
|
|
@@ -946,9 +946,9 @@ static ssize_t resume_store(struct kobject *kobj, struct kobj_attribute *attr,
|
|
|
if (maj != MAJOR(res) || min != MINOR(res))
|
|
|
goto out;
|
|
|
|
|
|
- mutex_lock(&pm_mutex);
|
|
|
+ lock_system_sleep();
|
|
|
swsusp_resume_device = res;
|
|
|
- mutex_unlock(&pm_mutex);
|
|
|
+ unlock_system_sleep();
|
|
|
printk(KERN_INFO "PM: Starting manual resume from disk\n");
|
|
|
noresume = 0;
|
|
|
software_resume();
|