From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Jiri Slaby <jirislaby@gmail.com>
Cc: Linux kernel mailing list <linux-kernel@vger.kernel.org>,
linux-pm@lists.osdl.org, pavel@suse.cz
Subject: Re: 2.6.21-rc5: swsusp: Not enough free memory
Date: Thu, 12 Apr 2007 23:36:57 +0200 [thread overview]
Message-ID: <200704122336.57600.rjw@sisk.pl> (raw)
In-Reply-To: <461CF87C.4060801@gmail.com>
On Wednesday, 11 April 2007 17:02, Jiri Slaby wrote:
> Rafael J. Wysocki napsal(a):
> > On Wednesday, 11 April 2007 12:45, Jiri Slaby wrote:
> >> Rafael J. Wysocki napsal(a):
> >>> On Wednesday, 11 April 2007 09:36, Jiri Slaby wrote:
> >>>> Rafael J. Wysocki napsal(a):
> >>>>> On Monday, 9 April 2007 22:07, Jiri Slaby wrote:
> >>>>>> I have bad news for you :(. I thought I had unpatched kernel, but it happens
> >>>>>> in -rc6 too.
> >>>>> I guess you mean you're still seeing the 'not enough memory to suspend'
> >>>>> problem?
> >>>> Yes:
> >>>> Disabling non-boot CPUs ...
> >>>> kvm: disabling virtualization on CPU1
> >>>> Breaking affinity for irq 9
> >>>> CPU 1 is now offline
> >>>> SMP alternatives: switching to UP code
> >>>> CPU1 is down
> >>>> swsusp: critical section:
> >>>> swsusp: Need to copy 158309 pages
> >>>> swsusp: Not enough free memory
> >>>> Error -12 suspending
> >>>> Enabling non-boot CPUs ...
> >>>> SMP alternatives: switching to SMP code
> >>>> Booting processor 1/2 APIC 0x1
> >>>> Initializing CPU#1
> >>> How reproducible is it? I'm going to try to reproduce it on one of my boxes.
> >> My tip is one of three cases: after some work on fresh boot -- some
> >> consumers such as thunderbird, firefox, 10 or so terminals with
> >> gnome-session. Single xterm + gnome-session semms not to be a problem.
> >
> > Does the workaround with setting the image size below 1/2 of RAM work for you?
>
> Yes. Yesterday I must set the value to 350M -- 400M was not enough.
Well, I can't reproduce it.
Can you please try to reproduce it with the appended patch applied and send
the output of dmesg to me?
Greetings,
Rafael
---
kernel/power/snapshot.c | 4 ++--
kernel/power/swsusp.c | 16 ++++++++++++----
2 files changed, 14 insertions(+), 6 deletions(-)
Index: linux-2.6.21-rc6/kernel/power/snapshot.c
===================================================================
--- linux-2.6.21-rc6.orig/kernel/power/snapshot.c
+++ linux-2.6.21-rc6/kernel/power/snapshot.c
@@ -871,9 +871,9 @@ static int enough_free_mem(unsigned int
if (!is_highmem(zone))
free += zone_page_state(zone, NR_FREE_PAGES);
}
-
+ printk("swsusp: Normal pages needed: %u\n", nr_pages);
nr_pages += count_pages_for_highmem(nr_highmem);
- pr_debug("swsusp: Normal pages needed: %u + %u + %u, available pages: %u\n",
+ printk("swsusp: Normal pages needed: %u + %u + %u, available pages: %u\n",
nr_pages, PAGES_FOR_IO, meta, free);
return free > nr_pages + PAGES_FOR_IO + meta;
Index: linux-2.6.21-rc6/kernel/power/swsusp.c
===================================================================
--- linux-2.6.21-rc6.orig/kernel/power/swsusp.c
+++ linux-2.6.21-rc6/kernel/power/swsusp.c
@@ -214,8 +214,8 @@ int swsusp_shrink_memory(void)
long tmp;
struct zone *zone;
unsigned long pages = 0;
- unsigned int i = 0;
- char *p = "-\\|/";
+ /*unsigned int i = 0;
+ char *p = "-\\|/";*/
struct timeval start, stop;
printk("Shrinking memory... ");
@@ -227,7 +227,9 @@ int swsusp_shrink_memory(void)
size = count_data_pages() + PAGES_FOR_IO;
tmp = size;
size += highmem_size;
- for_each_zone (zone)
+ printk("Pages needed: %ld normal, %ld highmem\n",
+ tmp, highmem_size);
+ for_each_zone (zone) {
if (populated_zone(zone)) {
tmp += snapshot_additional_pages(zone);
if (is_highmem(zone)) {
@@ -238,11 +240,17 @@ int swsusp_shrink_memory(void)
tmp += zone->lowmem_reserve[ZONE_NORMAL];
}
}
+ printk("Pages needed: %ld normal, %ld highmem\n",
+ tmp, highmem_size);
+ }
if (highmem_size < 0)
highmem_size = 0;
+ printk("Pages needed: %ld normal, %ld highmem\n",
+ tmp, highmem_size);
tmp += highmem_size;
+ printk("Pages needed: %ld\n", tmp);
if (tmp > 0) {
tmp = __shrink_memory(tmp);
if (!tmp)
@@ -252,7 +260,7 @@ int swsusp_shrink_memory(void)
tmp = __shrink_memory(size - (image_size / PAGE_SIZE));
pages += tmp;
}
- printk("\b%c", p[i++%4]);
+ /*printk("\b%c", p[i++%4]);*/
} while (tmp > 0);
do_gettimeofday(&stop);
printk("\bdone (%lu pages freed)\n", pages);
next prev parent reply other threads:[~2007-04-12 21:36 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-29 7:44 2.6.21-rc5: swsusp: Not enough free memory Jiri Slaby
2007-03-29 14:39 ` Rafael J. Wysocki
2007-03-29 14:39 ` Jiri Slaby
2007-04-01 18:17 ` Jiri Slaby
2007-04-01 19:23 ` Rafael J. Wysocki
2007-04-02 8:24 ` Jiri Slaby
2007-04-02 21:18 ` Rafael J. Wysocki
2007-04-03 7:37 ` Jiri Slaby
2007-04-03 10:50 ` Rafael J. Wysocki
2007-04-03 19:59 ` Jiri Slaby
2007-04-09 20:07 ` Jiri Slaby
2007-04-09 20:20 ` Rafael J. Wysocki
2007-04-11 7:36 ` Jiri Slaby
2007-04-11 9:55 ` Rafael J. Wysocki
2007-04-11 10:45 ` Jiri Slaby
2007-04-11 14:40 ` Rafael J. Wysocki
2007-04-11 15:02 ` Jiri Slaby
2007-04-12 21:36 ` Rafael J. Wysocki [this message]
2007-04-13 10:14 ` Jiri Slaby
2007-04-13 12:00 ` Rafael J. Wysocki
2007-04-13 12:21 ` Nigel Cunningham
2007-04-13 20:41 ` [RFD] swsusp problem: Drivers allocate much memory during suspend (was: Re: 2.6.21-rc5: swsusp: Not enough free memory) Rafael J. Wysocki
2007-04-13 21:34 ` Nigel Cunningham
2007-04-13 21:40 ` [RFD] swsusp problem: Drivers allocate much memory during suspend Chuck Ebbert
2007-04-13 22:10 ` [RFD] swsusp problem: Drivers allocate much memory during suspend (was: Re: 2.6.21-rc5: swsusp: Not enough free memory) Pavel Machek
2007-04-13 22:34 ` Nigel Cunningham
2007-04-13 22:38 ` Pavel Machek
2007-04-13 22:43 ` Nigel Cunningham
2007-04-13 22:35 ` Rafael J. Wysocki
2007-04-13 22:36 ` Nigel Cunningham
2007-04-13 22:40 ` Pavel Machek
2007-04-13 22:45 ` Nigel Cunningham
2007-04-13 22:57 ` Rafael J. Wysocki
2007-04-13 23:03 ` Nigel Cunningham
2007-04-14 9:33 ` Rafael J. Wysocki
2007-04-14 22:53 ` Rafael J. Wysocki
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=200704122336.57600.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.osdl.org \
--cc=pavel@suse.cz \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox