lkml.org 
[lkml]   [2008]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] UV: memory allocation at initialization
    From
    Date


    From: Cliff Wickman <cpw@sgi.com>

    UV initialization is currently called too late to call alloc_bootmem_pages().
    The current sequence is:

    start_kernel()
    mem_init()
    free_all_bootmem() <--- discard of bootmem
    rest_init()
    kernel_init()
    smp_prepare_cpus()
    native_smp_prepare_cpus()
    uv_system_init() <--- uses alloc_bootmem_pages()

    It should be calling kmalloc().

    Diffed against 2.6.27 (linux-next)

    Signed-off-by: Cliff Wickman <cpw@sgi.com>
    ---
    arch/x86/kernel/genx2apic_uv_x.c | 7 +++----
    1 file changed, 3 insertions(+), 4 deletions(-)

    Index: linux/arch/x86/kernel/genx2apic_uv_x.c
    ===================================================================
    --- linux.orig/arch/x86/kernel/genx2apic_uv_x.c
    +++ linux/arch/x86/kernel/genx2apic_uv_x.c
    @@ -15,7 +15,6 @@
    #include <linux/ctype.h>
    #include <linux/init.h>
    #include <linux/sched.h>
    -#include <linux/bootmem.h>
    #include <linux/module.h>
    #include <linux/hardirq.h>
    #include <asm/smp.h>
    @@ -407,16 +406,16 @@ void __init uv_system_init(void)
    printk(KERN_DEBUG "UV: Found %d blades\n", uv_num_possible_blades());

    bytes = sizeof(struct uv_blade_info) * uv_num_possible_blades();
    - uv_blade_info = alloc_bootmem_pages(bytes);
    + uv_blade_info = kmalloc(bytes, GFP_KERNEL);

    get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size);

    bytes = sizeof(uv_node_to_blade[0]) * num_possible_nodes();
    - uv_node_to_blade = alloc_bootmem_pages(bytes);
    + uv_node_to_blade = kmalloc(bytes, GFP_KERNEL);
    memset(uv_node_to_blade, 255, bytes);

    bytes = sizeof(uv_cpu_to_blade[0]) * num_possible_cpus();
    - uv_cpu_to_blade = alloc_bootmem_pages(bytes);
    + uv_cpu_to_blade = kmalloc(bytes, GFP_KERNEL);
    memset(uv_cpu_to_blade, 255, bytes);

    blade = 0;

    \
     
     \ /
      Last update: 2008-10-24 00:57    [W:0.032 / U:0.420 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site