From 7a5e5838116a752d51c443dbb1cc61541c02b597 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 10 Mar 2010 11:38:42 +0100 Subject: [PATCH] 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 --- vl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vl.c b/vl.c index a741331460..730ea50aac 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); } -- GitLab