• Tang Chen's avatar
    x86/numa: Online memory-less nodes at boot time · 2532fc31
    Tang Chen authored
    For now, x86 does not support memory-less node. A node without memory
    will not be onlined, and the cpus on it will be mapped to the other
    online nodes with memory in init_cpu_to_node(). The reason of doing this
    is to ensure each cpu has mapped to a node with memory, so that it will
    be able to allocate local memory for that cpu.
    
    But we don't have to do it in this way.
    
    In this series of patches, we are going to construct cpu <-> node mapping
    for all possible cpus at boot time, which is a persistent mapping. It means
    that the cpu will be mapped to the node which it belongs to, and will never
    be changed. If a node has only cpus but no memory, the cpus on it will be
    mapped to a memory-less node. And the memory-less node should be onlined.
    
    Allocate pgdats for all memory-less nodes and online them at boot
    time. Then build zonelists for these nodes. As a result, when cpus on these
    memory-less nodes try to allocate memory from local node, it will
    automatically fall back to the proper zones in the zonelists.
    Signed-off-by: default avatarZhu Guihua <zhugh.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarDou Liyang <douly.fnst@cn.fujitsu.com>
    Acked-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: mika.j.penttila@gmail.com
    Cc: len.brown@intel.com
    Cc: Tang Chen <tangchen@cn.fujitsu.com>
    Cc: rafael@kernel.org
    Cc: rjw@rjwysocki.net
    Cc: yasu.isimatu@gmail.com
    Cc: linux-mm@kvack.org
    Cc: linux-acpi@vger.kernel.org
    Cc: isimatu.yasuaki@jp.fujitsu.com
    Cc: gongzhaogang@inspur.com
    Cc: tj@kernel.org
    Cc: izumi.taku@jp.fujitsu.com
    Cc: cl@linux.com
    Cc: chen.tang@easystack.cn
    Cc: akpm@linux-foundation.org
    Cc: kamezawa.hiroyu@jp.fujitsu.com
    Cc: lenb@kernel.org
    Link: http://lkml.kernel.org/r/1472114120-3281-2-git-send-email-douly.fnst@cn.fujitsu.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    2532fc31
numa.c 22.7 KB