From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@suse.cz>, Stefan Seyfried <seife@suse.de>
Cc: LKML <linux-kernel@vger.kernel.org>, Andy Isaacson <adi@hexapodia.org>
Subject: [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size)
Date: Sat, 10 Dec 2005 14:21:57 +0100 [thread overview]
Message-ID: <200512101421.57918.rjw@sisk.pl> (raw)
In-Reply-To: <200512092308.19644.rjw@sisk.pl>
Hi,
On Friday, 9 December 2005 23:08, Rafael J. Wysocki wrote:
}-- snip --{
> > >
> > > This would at least give us a chance for a second try. I know that Pavel
> > > dislikes userspace tunables, but i dislike failing suspends ;-)
> >
> > Can we do that when we start seeing failed suspends? I think it will
> > not happen. If we have reasonably-sized swap partition, it should be
> > ok.
>
> Yes. Moreover, we can do something like that without a userspace
> tunable, if we check for the free swap before we try to shrink memory.
> This would take some time to implement, though, and I'd rather
> like to do the userland interface first.
>
> The tunable may be useful to people who'd like to achieve the
> maximum efficiency of suspend/resume and it would be a nice
> feature to have, I think, but let's say we'll try to implement it
> in the future, if still needed/wanted.
Actually the tunable turned out to be quite easy to implement and I think
I'll need it for userspace swsusp (the suspend-handling userspace
process will need to tell the kernel how much space there is for the
image).
Please give it a try.
Greetings,
Rafael
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
kernel/power/disk.c | 25 +++++++++++++++++++++++++
kernel/power/power.h | 6 ++++--
kernel/power/swsusp.c | 4 +++-
3 files changed, 32 insertions(+), 3 deletions(-)
Index: linux-2.6.15-rc5-mm1/kernel/power/disk.c
===================================================================
--- linux-2.6.15-rc5-mm1.orig/kernel/power/disk.c 2005-12-10 13:12:18.000000000 +0100
+++ linux-2.6.15-rc5-mm1/kernel/power/disk.c 2005-12-10 13:20:38.000000000 +0100
@@ -367,9 +367,34 @@
power_attr(resume);
+static ssize_t image_size_show(struct subsystem * subsys, char *buf)
+{
+ return sprintf(buf, "%u\n", image_size);
+}
+
+static ssize_t image_size_store(struct subsystem * subsys, const char * buf, size_t n)
+{
+ int len;
+ char *p;
+ unsigned int size;
+
+ p = memchr(buf, '\n', n);
+ len = p ? p - buf : n;
+
+ if (sscanf(buf, "%u", &size) == 1) {
+ image_size = size < MAX_IMAGE_SIZE ? size : MAX_IMAGE_SIZE;
+ return n;
+ }
+
+ return -EINVAL;
+}
+
+power_attr(image_size);
+
static struct attribute * g[] = {
&disk_attr.attr,
&resume_attr.attr,
+ &image_size_attr.attr,
NULL,
};
Index: linux-2.6.15-rc5-mm1/kernel/power/power.h
===================================================================
--- linux-2.6.15-rc5-mm1.orig/kernel/power/power.h 2005-12-10 13:12:18.000000000 +0100
+++ linux-2.6.15-rc5-mm1/kernel/power/power.h 2005-12-10 13:20:46.000000000 +0100
@@ -53,10 +53,12 @@
extern struct pbe *pagedir_nosave;
/*
- * Preferred image size in MB (set it to zero to get the smallest
+ * Maximum image size in MB (set it to zero to get the smallest
* image possible)
*/
-#define IMAGE_SIZE 500
+#define MAX_IMAGE_SIZE 500
+
+extern unsigned int image_size;
extern asmlinkage int swsusp_arch_suspend(void);
extern asmlinkage int swsusp_arch_resume(void);
Index: linux-2.6.15-rc5-mm1/kernel/power/swsusp.c
===================================================================
--- linux-2.6.15-rc5-mm1.orig/kernel/power/swsusp.c 2005-12-10 13:12:18.000000000 +0100
+++ linux-2.6.15-rc5-mm1/kernel/power/swsusp.c 2005-12-10 13:20:42.000000000 +0100
@@ -69,6 +69,8 @@
#include "power.h"
+unsigned int image_size = MAX_IMAGE_SIZE;
+
#ifdef CONFIG_HIGHMEM
unsigned int count_highmem_pages(void);
int save_highmem(void);
@@ -647,7 +649,7 @@
if (!tmp)
return -ENOMEM;
pages += tmp;
- } else if (size > (IMAGE_SIZE * 1024 * 1024) / PAGE_SIZE) {
+ } else if (size > (image_size * 1024 * 1024) / PAGE_SIZE) {
tmp = shrink_all_memory(SHRINK_BITE);
pages += tmp;
}
next prev parent reply other threads:[~2005-12-10 13:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-07 21:46 [PATCH][mm] swsusp: limit image size Rafael J. Wysocki
2005-12-07 21:52 ` Pavel Machek
2005-12-09 15:45 ` Stefan Seyfried
2005-12-09 15:48 ` Stefan Seyfried
2005-12-09 17:04 ` Rafael J. Wysocki
2005-12-09 18:30 ` Stefan Seyfried
2005-12-09 19:17 ` Pavel Machek
2005-12-09 22:08 ` Rafael J. Wysocki
2005-12-10 13:21 ` Rafael J. Wysocki [this message]
2005-12-10 16:06 ` [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size) Pavel Machek
2005-12-10 20:06 ` Rafael J. Wysocki
2005-12-10 22:56 ` Rafael J. Wysocki
2005-12-10 23:01 ` Pavel Machek
2005-12-16 2:09 ` Andy Isaacson
2005-12-16 10:16 ` Stefan Seyfried
2005-12-16 14:26 ` Christian Trefzer
2005-12-16 18:08 ` Rafael J. Wysocki
2005-12-16 19:29 ` Christian Trefzer
2005-12-16 21:09 ` Rafael J. Wysocki
2005-12-17 16:47 ` [RFC] swsusp: brainstorming on a freaked-out approach (was: Re: [RFC/RFT] swsusp: image size tunable) Christian Trefzer
2005-12-18 17:44 ` Pavel Machek
2005-12-18 18:24 ` [RFC] swsusp: brainstorming on a freaked-out approach Christian Trefzer
2005-12-10 22:59 ` [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size) Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200512101421.57918.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=adi@hexapodia.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@suse.cz \
--cc=seife@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.