mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
PM / hibernate: Make passing hibernate offsets more friendly
Currently the only way to specify a hibernate offset for a swap file is on the kernel command line. Add a new /sys/power/resume_offset that lets userspace specify the offset and disk to use when initiating a hibernate cycle. Change-Id: Ied0be8062e6677e44acbfcb8cbf235e6bb8cf2ef Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Git-commit: 355064675f1c997cea017ea64c8f2c216e5425d9 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Signed-off-by: Yimin Peng <yiminp@codeaurora.org>
This commit is contained in:
parent
3964164902
commit
6f8581efba
@ -24,8 +24,16 @@ Some warnings, first.
|
||||
* see the FAQ below for details. (This is not true for more traditional
|
||||
* power states like "standby", which normally don't turn USB off.)
|
||||
|
||||
Swap partition:
|
||||
You need to append resume=/dev/your_swap_partition to kernel command
|
||||
line. Then you suspend by
|
||||
line or specify it using /sys/power/resume.
|
||||
|
||||
Swap file:
|
||||
If using a swapfile you can also specify a resume offset using
|
||||
resume_offset=<number> on the kernel command line or specify it
|
||||
in /sys/power/resume_offset.
|
||||
|
||||
After preparing then you suspend by
|
||||
|
||||
echo shutdown > /sys/power/disk; echo disk > /sys/power/state
|
||||
|
||||
|
@ -1076,6 +1076,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)
|
||||
{
|
||||
@ -1121,6 +1144,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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user