Message ID | 20230428101735.130779-1-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
Series | cpus-common: stop using mb_set/mb_read | expand |
On 4/28/23 11:17, Paolo Bonzini wrote: > Use a store-release at the end of the work item, and a load-acquire when > waiting for the item to be completed. This is the standard message passing > pattern and is both enough and clearer than mb_read/mb_set. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > cpus-common.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/cpus-common.c b/cpus-common.c > index b0047e456f93..a53716deb437 100644 > --- a/cpus-common.c > +++ b/cpus-common.c > @@ -157,7 +157,7 @@ void do_run_on_cpu(CPUState *cpu, run_on_cpu_func func, run_on_cpu_data data, > wi.exclusive = false; > > queue_work_on_cpu(cpu, &wi); > - while (!qatomic_mb_read(&wi.done)) { > + while (!qatomic_load_acquire(&wi.done)) { > CPUState *self_cpu = current_cpu; > > qemu_cond_wait(&qemu_work_cond, mutex); > @@ -363,7 +363,7 @@ void process_queued_cpu_work(CPUState *cpu) > if (wi->free) { > g_free(wi); > } else { > - qatomic_mb_set(&wi->done, true); > + qatomic_store_release(&wi->done, true); > } > } > qemu_mutex_unlock(&cpu->work_mutex);
diff --git a/cpus-common.c b/cpus-common.c index b0047e456f93..a53716deb437 100644 --- a/cpus-common.c +++ b/cpus-common.c @@ -157,7 +157,7 @@ void do_run_on_cpu(CPUState *cpu, run_on_cpu_func func, run_on_cpu_data data, wi.exclusive = false; queue_work_on_cpu(cpu, &wi); - while (!qatomic_mb_read(&wi.done)) { + while (!qatomic_load_acquire(&wi.done)) { CPUState *self_cpu = current_cpu; qemu_cond_wait(&qemu_work_cond, mutex); @@ -363,7 +363,7 @@ void process_queued_cpu_work(CPUState *cpu) if (wi->free) { g_free(wi); } else { - qatomic_mb_set(&wi->done, true); + qatomic_store_release(&wi->done, true); } } qemu_mutex_unlock(&cpu->work_mutex);
Use a store-release at the end of the work item, and a load-acquire when waiting for the item to be completed. This is the standard message passing pattern and is both enough and clearer than mb_read/mb_set. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- cpus-common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)