Paolo Bonzini <pbonz...@redhat.com> writes: > On 05/05/2017 12:38, Alex Bennée wrote: >> >> while (qemu_tcg_should_sleep(cpu)) { >> + qemu_mutex_lock_iothread(); >> stop_tcg_kick_timer(); >> qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex); >> + qemu_mutex_unlock_iothread(); >> } > > This is racy. You need to recheck the condition under the lock, or to > switch from QemuCond to QemuEvent (then you still need to check the > condition twice, the second between qemu_event_reset and qemu_event_wait).
Doh of course, being a bit too eager there ;-) -- Alex Bennée