[05/18] do not use qemu_event_increment outside qemu_notify_event

Submitted by Paolo Bonzini on March 10, 2010, 10:38 a.m.


Message ID 1268217535-26554-6-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini March 10, 2010, 10:38 a.m.
qemu_notify_event in the non-iothread case is only stopping the current
CPU.  However, if the CPU is idle and the main loop is in the select
call then a call to qemu_event_increment is needed too (as done in
host_alarm_handler).  Since in general one doesn't know whether the CPU
is executing or not, it is a safe bet to always do qemu_event_increment.

Another way to see it: after this patch qemu_event_increment is the
"common part" of qemu_notify_event for both the CONFIG_IOTHREAD and
!CONFIG_IOTHREAD cases, which makes sense.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
 vl.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

Patch hide | download patch | download mbox

diff --git a/vl.c b/vl.c
index 6acf702..a546d85 100644
--- a/vl.c
+++ b/vl.c
@@ -1053,7 +1053,7 @@  static void host_alarm_handler(int host_signum)
                            qemu_get_clock(rt_clock)) ||
                            qemu_get_clock(host_clock))) {
-        qemu_event_increment();
         t->expired = alarm_has_dynticks(t);
@@ -3361,6 +3361,7 @@  void qemu_notify_event(void)
     CPUState *env = cpu_single_env;
+    qemu_event_increment ();
     if (env) {