Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1356598

[PATCH 4/7] KVM/x86: Call smp_wmb() before increasing tlbs_dirty

From Lan Tianyu <tianyu.lan@intel.com>
Newsgroups linux.kernel
Subject [PATCH 4/7] KVM/x86: Call smp_wmb() before increasing tlbs_dirty
Date 2016-03-13 04:30 +0100
Message-ID <rc4T7-830-9@gated-at.bofh.it> (permalink)
References <rc4T7-830-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Update spte before increasing tlbs_dirty to make sure no tlb flush
in lost after spte is zapped. This pairs with the barrier in the
kvm_flush_remote_tlbs().

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 arch/x86/kvm/paging_tmpl.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index e159a81..d34475e 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -949,6 +949,12 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp)
 			return 0;
 
 		if (FNAME(prefetch_invalid_gpte)(vcpu, sp, &sp->spt[i], gpte)) {
+			/*
+			 * Update spte before increasing tlbs_dirty to make sure
+			 * no tlb flush in lost after spte is zapped, see the
+			 * comments in kvm_flush_remote_tlbs().
+			 */
+			smp_wmb();
 			vcpu->kvm->tlbs_dirty++;
 			continue;
 		}
@@ -964,6 +970,11 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp)
 
 		if (gfn != sp->gfns[i]) {
 			drop_spte(vcpu->kvm, &sp->spt[i]);
+			/*
+			 * The same as above where we are doing
+			 * prefetch_invalid_gpte().
+			 */
+			smp_wmb();
 			vcpu->kvm->tlbs_dirty++;
 			continue;
 		}
-- 
1.8.4.rc0.1.g8f6a3e5.dirty

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/7] KVM/X86/PPC: Clear up kvm mmu memory barriers and update related comments Lan Tianyu <tianyu.lan@intel.com> - 2016-03-13 04:30 +0100
  [PATCH 4/7] KVM/x86: Call smp_wmb() before increasing tlbs_dirty Lan Tianyu <tianyu.lan@intel.com> - 2016-03-13 04:30 +0100
  [PATCH 7/7] KVM/PPC:  update the comment of memory barrier in the kvmppc_prepare_to_enter() Lan Tianyu <tianyu.lan@intel.com> - 2016-03-13 04:30 +0100
  [PATCH 5/7] KVM: Replace smp_mb() with smp_load_acquire() in the kvm_flush_remote_tlbs() Lan Tianyu <tianyu.lan@intel.com> - 2016-03-13 04:30 +0100
  [PATCH 6/7] KVM/x86: update the comment of memory barrier in the vcpu_enter_guest() Lan Tianyu <tianyu.lan@intel.com> - 2016-03-13 04:30 +0100
  Re: [PATCH 0/7] KVM/X86/PPC: Clear up kvm mmu memory barriers and  update related comments Paolo Bonzini <pbonzini@redhat.com> - 2016-03-14 14:10 +0100

csiph-web