Add an if() to the wait-table init code to allow runtime
allocations to call kmalloc() instead of using the
bootmem allocator

Signed-off-by: Dave Hansen <[EMAIL PROTECTED]>
---

 ./arch/sparc64/kernel/dtlb_base.S |    0 
 memhotplug-dave/mm/page_alloc.c   |   10 +++++++---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff -puN mm/sparse.c~C2-kmalloc-zone_wait_table-at-runtime mm/sparse.c
diff -L mm/memory_hotplug.c -puN /dev/null /dev/null
diff -L drivers/base/memory.c -puN /dev/null /dev/null
diff -puN mm/page_alloc.c~C2-kmalloc-zone_wait_table-at-runtime mm/page_alloc.c
--- memhotplug/mm/page_alloc.c~C2-kmalloc-zone_wait_table-at-runtime    
2005-08-12 07:43:44.000000000 -0700
+++ memhotplug-dave/mm/page_alloc.c     2005-08-12 07:43:44.000000000 -0700
@@ -1854,6 +1854,7 @@ static __devinit
 void zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages)
 {
        int i;
+       unsigned long size_bytes;
 
        /*
         * The per-page waitqueue mechanism uses hashed waitqueues
@@ -1861,9 +1862,12 @@ 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(zone->zone_pgdat,
+                                                     size_bytes);
 
        for(i = 0; i < zone->wait_table_size; ++i)
                init_waitqueue_head(zone->wait_table + i);
diff -L serq -puN /dev/null /dev/null
diff -puN 
./arch/sparc64/kernel/dtlb_base.S~C2-kmalloc-zone_wait_table-at-runtime 
./arch/sparc64/kernel/dtlb_base.S
_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to