On 21/09/2016 18:08, Emilio G. Cota wrote: > On Mon, Sep 19, 2016 at 14:50:57 +0200, Paolo Bonzini wrote: >> We have to run safe work items outside the BQL; for now keep other >> work items within the BQL, though this can be changed relatively >> easily as a follow-up. >> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> cpus-common.c | 33 +++++++++++++++++++++++++++++++-- >> include/qom/cpu.h | 14 ++++++++++++++ >> 2 files changed, 45 insertions(+), 2 deletions(-) >> >> diff --git a/cpus-common.c b/cpus-common.c >> index 6adc982..f7ad534 100644 >> --- a/cpus-common.c >> +++ b/cpus-common.c >> @@ -106,7 +106,7 @@ struct qemu_work_item { >> struct qemu_work_item *next; >> run_on_cpu_func func; >> void *data; >> - bool free, done; >> + bool free, exclusive, done; >> }; >> >> static void queue_work_on_cpu(CPUState *cpu, struct qemu_work_item *wi) >> @@ -139,6 +139,7 @@ void do_run_on_cpu(CPUState *cpu, run_on_cpu_func func, >> void *data, >> wi.data = data; >> wi.done = false; >> wi.free = false; >> + wi.exclusive = false; >> >> queue_work_on_cpu(cpu, &wi); >> while (!atomic_mb_read(&wi.done)) { >> @@ -157,6 +158,7 @@ void async_run_on_cpu(CPUState *cpu, run_on_cpu_func >> func, void *data) >> wi->func = func; >> wi->data = data; >> wi->free = true; >> + wi->exclusive = false; > > Just a very pedantic nit: in patch 08/19 we don't set wi->done false because > there's a malloc0 right above this. So we might want to do the same here. > > E. >
Ok. Paolo