Trigger exit from cpu_exec_all on pending IO events
authorJan Kiszka <jan.kiszka@siemens.com>
Tue, 1 Feb 2011 21:15:45 +0000 (22:15 +0100)
committerMarcelo Tosatti <mtosatti@redhat.com>
Mon, 14 Feb 2011 14:39:44 +0000 (12:39 -0200)
Except for timer events, we currently do not leave the loop over all
VCPUs if an IO event was filed. That may cause unexpected IO latencies
under !CONFIG_IOTHREAD in SMP scenarios. Fix it by setting the global
exit_request which breaks the loop.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
cpus.c

diff --git a/cpus.c b/cpus.c
index f8a88e3..0abc009 100644 (file)
--- a/cpus.c
+++ b/cpus.c
@@ -307,6 +307,7 @@ void qemu_notify_event(void)
     if (next_cpu && env != next_cpu) {
         cpu_exit(next_cpu);
     }
+    exit_request = 1;
 }
 
 void qemu_mutex_lock_iothread(void) {}