• Tejun Heo's avatar
    x86-64, NUMA: Kill numa_nodes[] · 91556237
    Tejun Heo authored
    numa_nodes[] doesn't carry any information which isn't present in
    numa_meminfo.  Each entry is simply min/max range of all the memblks
    for the node.  This is not only redundant but also inaccurate when
    memblks for different nodes interleave - for example,
    find_node_by_addr() can return the wrong nodeid.
    
    Kill numa_nodes[] and always use numa_meminfo instead.
    
    * nodes_cover_memory() is renamed to numa_meminfo_cover_memory() and
      now operations on numa_meminfo and returns bool.
    
    * setup_node_bootmem() needs min/max range.  Compute the range on the
      fly.  setup_node_bootmem() invocation is restructured to use outer
      loop instead of hardcoding the double invocations.
    
    * find_node_by_addr() now operates on numa_meminfo.
    
    * setup_physnodes() builds physnodes[] from memblks.  This will go
      away when emulation code is updated to use struct numa_meminfo.
    
    This patch also makes the following misc changes.
    
    * Clearing of nodes_add[] clearing is converted to memset().
    
    * numa_add_memblk() in amd_numa_init() is moved down a bit for
      consistency.
    Signed-off-by: default avatarTejun 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>
    91556237
numa_64.c 25.2 KB