DESC dynamic-edit12 EDESC Signed-off-by: Dave Hansen Index: linux-2.6.13/mm/page_alloc.c =================================================================== --- linux-2.6.13.orig/mm/page_alloc.c 2005-08-30 12:09:37.000000000 -0700 +++ linux-2.6.13/mm/page_alloc.c 2005-08-30 12:09:53.000000000 -0700 @@ -1853,8 +1853,9 @@ void __init setup_per_cpu_pageset() static __devinit void zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages) { - struct pglist_data *pgdat = zone->zone_pgdat; int i; + struct pglist_data *pgdat = zone->zone_pgdat; + unsigned long size_bytes; /* * The per-page waitqueue mechanism uses hashed waitqueues @@ -1862,9 +1863,11 @@ void zone_wait_table_init(struct zone *z */ zone->wait_table_size = wait_table_size(zone_size_pages); zone->wait_table_bits = wait_table_bits(zone->wait_table_size); - zone->wait_table = (wait_queue_head_t *) - alloc_bootmem_node(pgdat, zone->wait_table_size - * sizeof(wait_queue_head_t)); + size_bytes = zone->wait_table_size * sizeof(wait_queue_head_t); + if (system_state >= SYSTEM_RUNNING) + zone->wait_table = kmalloc(size_bytes, GFP_KERNEL); + else + zone->wait_table = alloc_bootmem_node(pgdat, size_bytes); for(i = 0; i < zone->wait_table_size; ++i) init_waitqueue_head(zone->wait_table + i);