summary refs log tree commit diff stats
path: root/util/async.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-03-03 10:52:59 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2023-03-07 12:39:53 +0100
commite3a3b6ec8169eab2feb241b4982585001512cd55 (patch)
tree7c7eb3f3c10ab6ac7d8ddb794f21ecb668c829f8 /util/async.c
parentb532526a07ef3b903ead2e055fe6cc87b41057a3 (diff)
downloadfocaccia-qemu-e3a3b6ec8169eab2feb241b4982585001512cd55.tar.gz
focaccia-qemu-e3a3b6ec8169eab2feb241b4982585001512cd55.zip
qemu-coroutine-lock: add smp_mb__after_rmw()
mutex->from_push and mutex->handoff in qemu-coroutine-lock implement
the familiar pattern:

   write a                                  write b
   smp_mb()                                 smp_mb()
   read b                                   read a

The memory barrier is required by the C memory model even after a
SEQ_CST read-modify-write operation such as QSLIST_INSERT_HEAD_ATOMIC.
Add it and avoid the unclear qatomic_mb_read() operation.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'util/async.c')
0 files changed, 0 insertions, 0 deletions