diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2010-09-11 20:58:27 +0200 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2010-09-11 21:03:53 +0200 |
commit | 6715045ddc7472a22be5e49d4047d2d89b391f45 (patch) | |
tree | d9a48095e915407f6d54db29cfce44c201ae9cef /include | |
parent | 0109c2c48d062a04685638926a35ed20153fedc8 (diff) | |
download | talos-op-linux-6715045ddc7472a22be5e49d4047d2d89b391f45.tar.gz talos-op-linux-6715045ddc7472a22be5e49d4047d2d89b391f45.zip |
PM / Hibernate: Avoid hitting OOM during preallocation of memory
There is a problem in hibernate_preallocate_memory() that it calls
preallocate_image_memory() with an argument that may be greater than
the total number of available non-highmem memory pages. If that's
the case, the OOM condition is guaranteed to trigger, which in turn
can cause significant slowdown to occur during hibernation.
To avoid that, make preallocate_image_memory() adjust its argument
before calling preallocate_image_pages(), so that the total number of
saveable non-highem pages left is not less than the minimum size of
a hibernation image. Change hibernate_preallocate_memory() to try to
allocate from highmem if the number of pages allocated by
preallocate_image_memory() is too low.
Modify free_unnecessary_pages() to take all possible memory
allocation patterns into account.
Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Tested-by: M. Vefa Bicakci <bicave@superonline.com>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions