On Tue, Jul 10, 2012 at 05:59:41PM +0200, Michal Hocko wrote: >On Mon 09-07-12 19:59:35, Gavin Shan wrote: >[...] >> Michal, How about the following changelog? >> >> --- >> >> sparse_index_init() is designed to be safe if two copies of it race. It >> uses "index_init_lock" to ensure that, even in the case of a race, only >> one CPU will manage to do: >> >> mem_section[root] = section; >> >> On the other hand, sparse_index_init() is possiblly called during system >> boot stage and hotplug path as follows. We need't lock during system boot >> stage to protect "mem_section[root]" and the function has been protected by >> hotplug mutex "mem_hotplug_mutex" as well in hotplug case. So we needn't the >> spinklock in the function. > >The changelog is still hard to read but it's getting there slowly ;) >What about the following? Thanks, Michal. I will resend the patch with your changelog :-) Thanks for your time. Gavin >--- >sparse_index_init uses index_init_lock spinlock to protect root >mem_section assignment. The lock is not necessary anymore because the >function is called only during the boot (during paging init which >is executed only from a single CPU) and from the hotplug code (by >add_memory via arch_add_memory) which uses mem_hotplug_mutex. > >The lock has been introduced by 28ae55c9 (sparsemem extreme: hotplug >preparation) and sparse_index_init was used only during boot at that >time. >Later when the hotplug code (and add_memory) was introduced there was >no synchronization so it was possible to online more sections from >the same root probably (though I am not 100% sure about that). >The first synchronization has been added by 6ad696d2 (mm: allow memory >hotplug and hibernation in the same kernel) which has been later >replaced by the mem_hotplug_mutex - 20d6c96b (mem-hotplug: introduce >{un}lock_memory_hotplug()). > >Let's remove the lock as it is not needed and it makes the code more >confusing. >--- > >-- >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>