lkml.org 
[lkml]   [2011]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 17/33] x86-64, NUMA: Remove %NULL @nodeids handling from compute_hash_shift()
    Date
    numa_emulation() called compute_hash_shift() with %NULL @nodeids which
    meant identity mapping between index and nodeid. Make
    numa_emulation() build identity array and drop %NULL @nodeids handling
    from populate_memnodemap() and thus from compute_hash_shift(). This
    is to prepare for transition to using memblks instead.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Cyrill Gorcunov <gorcunov@gmail.com>
    Cc: Shaohui Zheng <shaohui.zheng@intel.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: H. Peter Anvin <hpa@linux.intel.com>
    ---
    arch/x86/mm/numa_64.c | 14 +++++++-------
    1 files changed, 7 insertions(+), 7 deletions(-)

    diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c
    index e211c00..243d18d 100644
    --- a/arch/x86/mm/numa_64.c
    +++ b/arch/x86/mm/numa_64.c
    @@ -63,12 +63,7 @@ static int __init populate_memnodemap(const struct bootnode *nodes,
    do {
    if (memnodemap[addr >> shift] != NUMA_NO_NODE)
    return -1;
    -
    - if (!nodeids)
    - memnodemap[addr >> shift] = i;
    - else
    - memnodemap[addr >> shift] = nodeids[i];
    -
    + memnodemap[addr >> shift] = nodeids[i];
    addr += (1UL << shift);
    } while (addr < end);
    res = 1;
    @@ -706,6 +701,7 @@ static int __init split_nodes_size_interleave(u64 addr, u64 max_addr, u64 size)
    static int __init numa_emulation(unsigned long start_pfn,
    unsigned long last_pfn, int acpi, int amd)
    {
    + static int nodeid[NR_NODE_MEMBLKS] __initdata;
    u64 addr = start_pfn << PAGE_SHIFT;
    u64 max_addr = last_pfn << PAGE_SHIFT;
    int num_nodes;
    @@ -730,7 +726,11 @@ static int __init numa_emulation(unsigned long start_pfn,

    if (num_nodes < 0)
    return num_nodes;
    - memnode_shift = compute_hash_shift(nodes, num_nodes, NULL);
    +
    + for (i = 0; i < ARRAY_SIZE(nodeid); i++)
    + nodeid[i] = i;
    +
    + memnode_shift = compute_hash_shift(nodes, num_nodes, nodeid);
    if (memnode_shift < 0) {
    memnode_shift = 0;
    printk(KERN_ERR "No NUMA hash function found. NUMA emulation "
    --
    1.7.1


    \
     
     \ /
      Last update: 2011-02-16 13:25    [W:0.022 / U:2.692 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site