From: Paolo Bonzini Date: Wed, 10 Mar 2010 10:38:42 +0000 (+0100) Subject: do not use qemu_event_increment outside qemu_notify_event X-Git-Tag: v0.13.0-rc0~1066 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7a5e5838116a752d51c443dbb1cc61541c02b597;p=thirdparty%2Fqemu.git do not use qemu_event_increment outside qemu_notify_event 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 Signed-off-by: Anthony Liguori --- diff --git a/vl.c b/vl.c index a7413314604..730ea50aacb 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_timer_expired(active_timers[QEMU_CLOCK_HOST], qemu_get_clock(host_clock))) { - qemu_event_increment(); + t->expired = alarm_has_dynticks(t); #ifndef CONFIG_IOTHREAD @@ -3360,6 +3360,7 @@ void qemu_notify_event(void) { CPUState *env = cpu_single_env; + qemu_event_increment (); if (env) { cpu_exit(env); }