aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm/kvm_main.c
diff options
context:
space:
mode:
authorTakuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>2014-02-18 03:22:47 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2014-02-18 04:07:26 -0500
commit5befdc385ddb2d5ae8995ad89004529a3acf58fc (patch)
treee31e48e6f1f810596b6c5ca9663c02c02ed319b5 /virt/kvm/kvm_main.c
parentf18eb31f9df52c28ec86d18d72f66ef689878daa (diff)
KVM: Simplify kvm->tlbs_dirty handling
When this was introduced, kvm_flush_remote_tlbs() could be called without holding mmu_lock. It is now acknowledged that the function must be called before releasing mmu_lock, and all callers have already been changed to do so. There is no need to use smp_mb() and cmpxchg() any more. Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r--virt/kvm/kvm_main.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index a9e999a48e43..f5668a431d54 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -186,12 +186,9 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
186 186
187void kvm_flush_remote_tlbs(struct kvm *kvm) 187void kvm_flush_remote_tlbs(struct kvm *kvm)
188{ 188{
189 long dirty_count = kvm->tlbs_dirty;
190
191 smp_mb();
192 if (make_all_cpus_request(kvm, KVM_REQ_TLB_FLUSH)) 189 if (make_all_cpus_request(kvm, KVM_REQ_TLB_FLUSH))
193 ++kvm->stat.remote_tlb_flush; 190 ++kvm->stat.remote_tlb_flush;
194 cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); 191 kvm->tlbs_dirty = false;
195} 192}
196EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs); 193EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs);
197 194