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 --- devel/kernel/power/swsusp.c~swsusp-take-lowmem-reserves-into-account 2006-04-22 01:39:33.000000000 -0700 +++ devel-akpm/kernel/power/swsusp.c 2006-04-22 01:39:33.000000000 -0700 @@ -188,8 +188,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_memory(tmp); if (!tmp) _