On Tue 26-06-12 14:07:35, Gavin Shan wrote: > >> With CONFIG_SPARSEMEM_EXTREME, the two level of memory section > >> descriptors are allocated from slab or bootmem. When allocating > >> from slab, let slab allocator to clear the memory chunk. However, > >> the memory chunk from bootmem allocator, we have to clear that > >> explicitly. > > > >I am sorry but I do not see how this optimize the current code. What is > >the difference between slab doing memset and doing it explicitly for all > >cases? > > > > Yeah, I do agree it won't do much optimization here. However, I'm wandering > if I can remove the whole peice of code doing memset(setion, 0, array_size) > since it seems that alloc_bootmem_node() also clears the allocated memory > chunk :-) Yes, alloc_bootem_node clears the memory (strange, I thought it doesn't do that), so the memset is really not necessary after s/kmalloc/kzalloc/. > > Please correct me if I'm wrong about alloc_bootmem_node() :-) > > Thanks, > Gavin > > >> > >> Signed-off-by: Gavin Shan <shangw@xxxxxxxxxxxxxxxxxx> > >> --- > >> mm/sparse.c | 12 ++++++------ > >> 1 file changed, 6 insertions(+), 6 deletions(-) > >> > >> diff --git a/mm/sparse.c b/mm/sparse.c > >> index afd0998..ce50c8b 100644 > >> --- a/mm/sparse.c > >> +++ b/mm/sparse.c > >> @@ -74,14 +74,14 @@ static struct mem_section noinline __init_refok *sparse_index_alloc(int nid) > >> > >> if (slab_is_available()) { > >> if (node_state(nid, N_HIGH_MEMORY)) > >> - section = kmalloc_node(array_size, GFP_KERNEL, nid); > >> + section = kzalloc_node(array_size, GFP_KERNEL, nid); > >> else > >> - section = kmalloc(array_size, GFP_KERNEL); > >> - } else > >> + section = kzalloc(array_size, GFP_KERNEL); > >> + } else { > >> section = alloc_bootmem_node(NODE_DATA(nid), array_size); > >> - > >> - if (section) > >> - memset(section, 0, array_size); > >> + if (section) > >> + memset(section, 0, array_size); > >> + } > >> > >> return section; > >> } > >> -- > >> 1.7.9.5 > >> > >> -- > >> To unsubscribe, send a message with 'unsubscribe linux-mm' in > >> the body to majordomo@xxxxxxxxx. For more info on Linux MM, > >> see: http://www.linux-mm.org/ . > >> Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> > > > >-- > >Michal Hocko > >SUSE Labs > >SUSE LINUX s.r.o. > >Lihovarska 1060/12 > >190 00 Praha 9 > >Czech Republic > > > >-- > >To unsubscribe, send a message with 'unsubscribe linux-mm' in > >the body to majordomo@xxxxxxxxx. For more info on Linux MM, > >see: http://www.linux-mm.org/ . > >Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> > > > -- Michal Hocko SUSE Labs SUSE LINUX s.r.o. Lihovarska 1060/12 190 00 Praha 9 Czech Republic -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>