mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 07:34:12 +08:00
mm/sparse: optimize sparse_index_alloc
With CONFIG_SPARSEMEM_EXTREME, the two levels of memory section descriptors are allocated from slab or bootmem. When allocating from slab, let slab/bootmem allocator clear the memory chunk. We needn't clear it explicitly. Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com> Reviewed-by: Michal Hocko <mhocko@suse.cz> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b214514592
commit
5b760e64a6
10
mm/sparse.c
10
mm/sparse.c
@ -65,14 +65,12 @@ static struct mem_section noinline __init_refok *sparse_index_alloc(int nid)
|
|||||||
|
|
||||||
if (slab_is_available()) {
|
if (slab_is_available()) {
|
||||||
if (node_state(nid, N_HIGH_MEMORY))
|
if (node_state(nid, N_HIGH_MEMORY))
|
||||||
section = kmalloc_node(array_size, GFP_KERNEL, nid);
|
section = kzalloc_node(array_size, GFP_KERNEL, nid);
|
||||||
else
|
else
|
||||||
section = kmalloc(array_size, GFP_KERNEL);
|
section = kzalloc(array_size, GFP_KERNEL);
|
||||||
} else
|
} else {
|
||||||
section = alloc_bootmem_node(NODE_DATA(nid), array_size);
|
section = alloc_bootmem_node(NODE_DATA(nid), array_size);
|
||||||
|
}
|
||||||
if (section)
|
|
||||||
memset(section, 0, array_size);
|
|
||||||
|
|
||||||
return section;
|
return section;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user