[stable] PM / Hibernate: Hibernate/thaw fixes/improvements

Bojan Smojver bojan at rexursive.com
Fri Jul 13 02:52:55 UTC 2012


On Fri, 2012-07-13 at 03:16 +0100, Ben Hutchings wrote:
> On Wed, 2012-07-11 at 16:08 -0500, Manoj Iyer wrote:
> > Please consider the following upstream patch to stable 3.2.y linux-stable
> >
> > Patch:  PM / Hibernate: Hibernate/thaw fixes/improvements
> > 
> > commit 5a21d489fd9541a4a66b9a500659abaca1b19a51
> > Author: Bojan Smojver <bojan at rexursive.com>
> > Date:   Sun Apr 29 22:42:06 2012 +0200
> > 
> >      PM / Hibernate: Hibernate/thaw fixes/improvements
> > 
> >       1. Do not allocate memory for buffers from emergency pools, unless
> >          absolutely required. Do not warn about and do not retry non-essential
> >          failed allocations.

We drops KERN_HIGH from page allocation request and tells the allocator
not to retry and not to warn us about failed allocations. These are
buffers being allocated that are good for speed, but not essential, so
we do not want to put unnecessary pressure on the memory system with
these allocations.

> >       2. Do not check the amount of free pages left on every single page
> >          write, but wait until one map is completely populated and then check.

This waits until one map is full before checking how much memory is left
and forcing a flush. Just a touch faster.

> >       3. Set maximum number of pages for read buffering consistently, instead
> >          of inadvertently depending on the size of the sector type.

On some systems, sector size is 8 bytes, on some 4. So, instead of using
that in calculations and getting different result for the number of
pages for buffering, we just define a constant.

> >       4. Fix copyright line, which I missed when I submitted the hibernation
> >          threading patch.

Does nothing. :-)

> >       5. Dispense with bit shifting arithmetic to improve readability.

Does nothing. :-)

> >       6. Really recalculate the number of pages required to be free after all
> >          allocations have been done.

Moves free page calculation after all threads have been started, to get
the a more realistic picture. Should not make a big difference, but it
is more correct than previous code (which was really a cut and paste to
a slightly wrong place).

> >       7. Fix calculation of pages required for read buffering. Only count in
> >          pages that do not belong to high memory.

This may make a difference on systems where low memory is very tight on
thaw. So, we make sure we never rely on high memory (which cannot be
used for this) in the calculations.

> >      Signed-off-by: Bojan Smojver <bojan at rexursive.com>
> >      Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
> 
> I don't know about this.  It sounds like it's making a lot of different
> changes, not all of which are that important.  But perhaps this is just
> a verbose description of a single logical change (it's certainly not a
> very large change).

Correct. Just minor cleanups.

> > This patch fixes S4 issues on Lenovo and thinkpad models. The patch applies
> > cleanly to:
> > git://git.kernel.org/pub/scm/linux/kernel/git/bwh/linux-3.2.y.git
> > tree. and the patch was tested on Ubuntu precise by me on Lenovo system.
> [...]
> 
> I wonder why it would fix these specific systems, as there's nothing
> obviously hardware-specific there.  Or, it fixes those, whether it might
> at the same time cause regressions for other systems.

I have a ThinkPad T510. I can hibernate/thaw without it and with it, but
this may depend on memory you have available on your machine. I
certainly hope it would not cause regressions, because it should be even
more careful about memory allocations than the present code.

> Bojan, can you comment on whether you think this meets the stable update
> criteria?

I hope so, yes. I wanted Rafael to include it in stable before, but he
asked me for a simpler patch instead.

-- 
Bojan





More information about the kernel-team mailing list