On Wed, Apr 02, 2008 at 02:05:28PM -0700, Christoph Lameter wrote: > Here is a patch to require single threaded execution during emm_register. > This also allows an easy implementation of an unregister function and gets > rid of the races that Andrea worried about.
That would work for #v10 if I remove the invalidate_range_start from try_to_unmap_cluster, it can't work for EMM because you've emm_invalidate_start firing anywhere outside the context of the current task (even regular rmap code, not just nonlinear corner case will trigger the race). In short the single threaded approach would be workable only thanks to the fact #v10 has the notion of invalidate_page for flushing the tlb _after_ and to avoid blocking the secondary page fault during swapping. In the kvm case I don't want to block the page fault for anything but madvise which is strictly only used after guest inflated the balloon, and the existence of invalidate_page allows that optimization, and allows not to serialize against the kvm page fault during all regular page faults when the invalidate_page is called while the page is pinned by the VM. The requirement for invalidate_page is that the pte and linux tlb are flushed _before_ and the page is freed _after_ the invalidate_page method. that's not the case for _begin/_end. The page is freed well before _end runs, hence the need of _begin and to block the secondary mmu page fault during the vma-mangling operations. #v10 takes care of all this, and despite I could perhaps fix the remaining two issues using the single-threaded enforcement I suggested, I preferred to go safe and spend an unsigned per-mm in case anybody needs to attach at runtime, the single threaded restriction didn't look very clean. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel