From: "Rafael J. Wysocki" swsusp allocates memory from the normal zone, so it cannot use lowmem reserve pages from the lower zones. Therefore it should not count these pages as available to it. Signed-off-by: Rafael J. Wysocki Cc: Pavel Machek Signed-off-by: Andrew Morton --- kernel/power/swsusp.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN kernel/power/swsusp.c~swsusp-take-lowmem-reserves-into-account kernel/power/swsusp.c --- 25/kernel/power/swsusp.c~swsusp-take-lowmem-reserves-into-account Thu Apr 13 15:47:00 2006 +++ 25-akpm/kernel/power/swsusp.c Thu Apr 13 15:47:00 2006 @@ -182,8 +182,10 @@ int swsusp_shrink_memory(void) PAGES_FOR_IO; tmp = size; for_each_zone (zone) - if (!is_highmem(zone)) + if (!is_highmem(zone) && populated_zone(zone)) { tmp -= zone->free_pages; + tmp += zone->lowmem_reserve[ZONE_NORMAL]; + } if (tmp > 0) { tmp = shrink_all_memory(SHRINK_BITE); if (!tmp) _