On Fri, May 17, 2013 at 02:39:07AM +0800, Xiao Guangrong wrote: > On 05/16/2013 11:57 PM, Gleb Natapov wrote: > > > One more thought. With current patch if zap_invalid_page() will be > > called second time while another zap_invalid_page() is still running > > (can that happen?) they will both run concurrently fighting for the > > Currently, it can not happen since zap_invalid_page is needed when slot > is being deleted which protected by slot-lock. > > But we allow it to be concurrent as you commented: we can use it in > ->release() instead of calling kvm_mmu_zap_all(), in that case, multiple > call zap_invalid_page() can happen. > That's only during VM destruction, no need to optimize for. > > mmu_lock. Is this a problem? > > Are you worry about that it can not progress due to lock contention when > walking active_list? Zapping at least 10 pages before releasing the lock > should ensure that it can progress. Yes, it will progress, but will bounce between two threads after each 10 pages. This is less efficient that letting one thread to finish zapping. Theoretically we can make one thread wait for the other. > > Do you see any potential issue? > Just thinking out loud :). If this cannot happen during normal operation, no reason to optimize for it. -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html