Selaa lähdekoodia

KVM: document memory barriers for kvm->vcpus/kvm->online_vcpus

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo Bonzini 10 vuotta sitten
vanhempi
commit
dd489240a2
2 muutettua tiedostoa jossa 9 lisäystä ja 0 poistoa
  1. 4 0
      include/linux/kvm_host.h
  2. 5 0
      virt/kvm/kvm_main.c

+ 4 - 0
include/linux/kvm_host.h

@@ -427,6 +427,10 @@ struct kvm {
 
 static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i)
 {
+	/* Pairs with smp_wmb() in kvm_vm_ioctl_create_vcpu, in case
+	 * the caller has read kvm->online_vcpus before (as is the case
+	 * for kvm_for_each_vcpu, for example).
+	 */
 	smp_rmb();
 	return kvm->vcpus[i];
 }

+ 5 - 0
virt/kvm/kvm_main.c

@@ -2206,6 +2206,11 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
 	}
 
 	kvm->vcpus[atomic_read(&kvm->online_vcpus)] = vcpu;
+
+	/*
+	 * Pairs with smp_rmb() in kvm_get_vcpu.  Write kvm->vcpus
+	 * before kvm->online_vcpu's incremented value.
+	 */
 	smp_wmb();
 	atomic_inc(&kvm->online_vcpus);