Process pending work while waiting for initial kick-off in TCG mode
authorJan Kiszka <jan.kiszka@siemens.com>
Fri, 17 Feb 2012 17:31:15 +0000 (18:31 +0100)
committerAvi Kivity <avi@redhat.com>
Sat, 18 Feb 2012 10:15:53 +0000 (12:15 +0200)
When the TCG thread is started but not yet the machine, we wait in
qemu_tcg_cpu_thread_fn on tcg_halt_cond. To allow run_on_cpu already at
this time, we need to process pending request in that loop.

CC: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
cpus.c

diff --git a/cpus.c b/cpus.c
index 4e65894..4a10775 100644 (file)
--- a/cpus.c
+++ b/cpus.c
@@ -761,6 +761,11 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
     /* wait for initial kick-off after machine start */
     while (first_cpu->stopped) {
         qemu_cond_wait(tcg_halt_cond, &qemu_global_mutex);
+
+        /* process any pending work */
+        for (env = first_cpu; env != NULL; env = env->next_cpu) {
+            qemu_wait_io_event_common(env);
+        }
     }
 
     while (1) {