diff options
Diffstat (limited to 'kernel/power/hibernate.c')
| -rw-r--r-- | kernel/power/hibernate.c | 28 | 
1 files changed, 26 insertions, 2 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index a5c36e9c56a6..5454cc639a8d 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -701,7 +701,7 @@ int hibernate(void)  	}  	pr_info("Syncing filesystems ... \n"); -	sys_sync(); +	ksys_sync();  	pr_info("done.\n");  	error = freeze_processes(); @@ -1053,7 +1053,7 @@ static ssize_t resume_store(struct kobject *kobj, struct kobj_attribute *attr,  	lock_system_sleep();  	swsusp_resume_device = res;  	unlock_system_sleep(); -	pr_info("Starting manual resume from disk\n"); +	pm_pr_dbg("Configured resume from disk to %u\n", swsusp_resume_device);  	noresume = 0;  	software_resume();  	return n; @@ -1061,6 +1061,29 @@ static ssize_t resume_store(struct kobject *kobj, struct kobj_attribute *attr,  power_attr(resume); +static ssize_t resume_offset_show(struct kobject *kobj, +				  struct kobj_attribute *attr, char *buf) +{ +	return sprintf(buf, "%llu\n", (unsigned long long)swsusp_resume_block); +} + +static ssize_t resume_offset_store(struct kobject *kobj, +				   struct kobj_attribute *attr, const char *buf, +				   size_t n) +{ +	unsigned long long offset; +	int rc; + +	rc = kstrtoull(buf, 0, &offset); +	if (rc) +		return rc; +	swsusp_resume_block = offset; + +	return n; +} + +power_attr(resume_offset); +  static ssize_t image_size_show(struct kobject *kobj, struct kobj_attribute *attr,  			       char *buf)  { @@ -1106,6 +1129,7 @@ power_attr(reserved_size);  static struct attribute * g[] = {  	&disk_attr.attr, +	&resume_offset_attr.attr,  	&resume_attr.attr,  	&image_size_attr.attr,  	&reserved_size_attr.attr,  | 
