> From: Paolo Bonzini [mailto:pbonz...@redhat.com] > On 09/07/2018 13:24, Pavel Dovgalyuk wrote: > > static void qemu_tcg_rr_wait_io_event(CPUState *cpu) > > { > > while (all_cpu_threads_idle()) { > > stop_tcg_kick_timer(); > > qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex); > > } > > > > start_tcg_kick_timer(); > > > > qemu_wait_io_event_common(cpu); > > } > > > > all_cpu_threads_idle() returns true when there is no queued work. > > But between this call and qemu_cond_wait() iothread may add queued work > > and the vCPU thread will sleep infinitely. > > Maybe queue_work_on_cpu is called outside BQL?
I don't remember now. However, rr series includes the better version of that patch. Pavel Dovgalyuk