Re: swsusp intermittent failures in 2.6.15-rc3-mm1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Thursday, 1 of December 2005 18:36, Andy Isaacson wrote:
> My Thinkpad X40 (1.25 GB, ipw2200) has had fairly reliable swsusp since
> 2.6.13 or thereabouts, and as recently as 2.6.15-rc1-mm1 I had about 20
> successful suspend/resume cycles.  But now that I'm running
> 2.6.15-rc3-mm1 I'm seeing intermittent failures like this:

Thanks a lot for the report.

The problem is apparently caused by my recent patch intended to speed up
suspend.  Could you please apply the appended debug patch, try to reproduce
the problem and send full dmesg output back to me?

Rafael


Index: linux-2.6.15-rc3-mm1/kernel/power/swsusp.c
===================================================================
--- linux-2.6.15-rc3-mm1.orig/kernel/power/swsusp.c	2005-12-01 22:13:17.000000000 +0100
+++ linux-2.6.15-rc3-mm1/kernel/power/swsusp.c	2005-12-01 22:24:56.000000000 +0100
@@ -635,12 +635,18 @@
 	printk("Shrinking memory...  ");
 	do {
 #ifdef FAST_FREE
-		tmp = count_data_pages() + count_highmem_pages();
+		tmp = count_data_pages();
+		printk("Data pages: %ld\n", tmp);
+		tmp += count_highmem_pages();
+		printk("Data and highmem pages: %ld\n", tmp);
 		tmp += (tmp + PBES_PER_PAGE - 1) / PBES_PER_PAGE +
 			PAGES_FOR_IO;
+		printk("Total pages: %ld\n", tmp);
 		for_each_zone (zone)
-			if (!is_highmem(zone))
+			if (!is_highmem(zone)) {
 				tmp -= zone->free_pages;
+				printk("Pages to free: %ld\n", tmp);
+			}
 		if (tmp > 0) {
 			tmp = shrink_all_memory(SHRINK_BITE);
 			if (!tmp)
Index: linux-2.6.15-rc3-mm1/kernel/power/snapshot.c
===================================================================
--- linux-2.6.15-rc3-mm1.orig/kernel/power/snapshot.c	2005-12-01 22:13:58.000000000 +0100
+++ linux-2.6.15-rc3-mm1/kernel/power/snapshot.c	2005-12-01 22:39:01.000000000 +0100
@@ -437,8 +437,14 @@
 
 static int enough_free_mem(unsigned int nr_pages)
 {
-	pr_debug("swsusp: available memory: %u pages\n", nr_free_pages());
-	return nr_free_pages() > (nr_pages + PAGES_FOR_IO +
+	struct zone *zone;
+	unsigned int n = 0;
+
+	for_each_zone (zone)
+		if (!is_highmem(zone))
+			n += zone->free_pages;
+	printk("swsusp: available memory: %u pages\n", n);
+	return n > (nr_pages + PAGES_FOR_IO +
 		(nr_pages + PBES_PER_PAGE - 1) / PBES_PER_PAGE);
 }
 


-- 
Beer is proof that God loves us and wants us to be happy - Benjamin Franklin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux