mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 21:21:09 +00:00
memory hotplug: alloc page from other node in memory online
To initialize hotadded node, some pages are allocated. At that time, the node hasn't memory, this makes the allocation always fail. In such case, let's allocate pages from other nodes. Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Yakui Zhao <yakui.zhao@intel.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Christoph Lameter <cl@linux-foundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
8e7e40d965
commit
f52407ce2d
3 changed files with 22 additions and 7 deletions
|
@ -62,9 +62,12 @@ static struct mem_section noinline __init_refok *sparse_index_alloc(int nid)
|
|||
unsigned long array_size = SECTIONS_PER_ROOT *
|
||||
sizeof(struct mem_section);
|
||||
|
||||
if (slab_is_available())
|
||||
section = kmalloc_node(array_size, GFP_KERNEL, nid);
|
||||
else
|
||||
if (slab_is_available()) {
|
||||
if (node_state(nid, N_HIGH_MEMORY))
|
||||
section = kmalloc_node(array_size, GFP_KERNEL, nid);
|
||||
else
|
||||
section = kmalloc(array_size, GFP_KERNEL);
|
||||
} else
|
||||
section = alloc_bootmem_node(NODE_DATA(nid), array_size);
|
||||
|
||||
if (section)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue