KVM: s390: document memory ordering for kvm_s390_vcpu_wakeup
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 19 Sep 2017 10:34:06 +0000 (12:34 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 9 Nov 2017 08:35:06 +0000 (09:35 +0100)
commit72e1ad4200d5ed5c5adf120b77fb2900a29a48e5
tree74c67a34f0badc9ee9fbd7487f3323a5b6871de4
parent650da25099606db05e3546201410d92cf2e2545a
KVM: s390: document memory ordering for kvm_s390_vcpu_wakeup

swait_active does not enforce any ordering and it can therefore trigger
some subtle races when the CPU moves the read for the check before a
previous store and that store is then used on another CPU that is
preparing the swait.

On s390 there is a call to swait_active in kvm_s390_vcpu_wakeup. The
good thing is, on s390 all potential races cannot happen because all
callers of kvm_s390_vcpu_wakeup do not store (no race) or use an atomic
operation, which handles memory ordering. Since this is not guaranteed
by the Linux semantics (but by the implementation on s390) let's add
smp_mb_after_atomic to make this obvious and document the ordering.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/interrupt.c