qemu: introduce qemu_cpu_kick (Marcelo Tosatti)
[qemu] / exec.c
diff --git a/exec.c b/exec.c
index 8245ac0..23013fb 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -1542,6 +1542,17 @@ void cpu_interrupt(CPUState *env, int mask)
     old_mask = env->interrupt_request;
     env->interrupt_request |= mask;
 
+#ifndef CONFIG_USER_ONLY
+    /*
+     * If called from iothread context, wake the target cpu in
+     * case its halted.
+     */
+    if (!qemu_cpu_self(env)) {
+        qemu_cpu_kick(env);
+        return;
+    }
+#endif
+
     if (use_icount) {
         env->icount_decr.u16.high = 0xffff;
 #ifndef CONFIG_USER_ONLY