On 05/17/2012 01:24 PM, Avi Kivity wrote: > Currently we flush the TLB while holding mmu_lock. This > increases the lock hold time by the IPI round-trip time, increasing > contention, and makes dropping the lock (for latency reasons) harder. > > This patch changes TLB management to be usable locklessly, introducing > the following APIs: > > kvm_mark_tlb_dirty() - mark the TLB as containing stale entries > kvm_cond_flush_remote_tlbs() - flush the TLB if it was marked as > dirty > > These APIs can be used without holding mmu_lock (though if the TLB > became stale due to shadow page table modifications, typically it > will need to be called with the lock held to prevent other threads > from seeing the modified page tables with the TLB unmarked and unflushed)/ > Oops, forgot the cover letter and the changelog. I'm experimenting with posting directly from git send-email. The change is the new patch 2 which tries to ensure we never bypass a tlb flush. Perhaps a better way to do it is to move the kvm_cond_flush_remote_tlbs() _before_ the code that depends on them, instead of after the code that changes the spte. Please review carefully. -- error compiling committee.c: too many arguments to function -- 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