Re: swsusp intermittent failures in 2.6.15-rc3-mm1

From: Pavel Machek
Date: Fri Dec 02 2005 - 13:13:47 EST


Hi!

> > > > 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?
> > >
> > > 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();
> >
> > You need at least count_data_pages() + 2*count_highmem_pages() free
> > pages (in lowmem).
>
> Do you mean a separate page is needed for each kmalloc() in
> save_highmem_zone()?

No, but notice get_zeroed_page() there, and that still needs to be
atomically copied.

So each higmem page takes:

1 get_zeroed_page()
1 kmalloc(struct(highmem_page))
+ copies of those into snapshot.

Pavel
--
Thanks, Sharp!
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/