aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accel/tcg/tcg-accel-ops-icount.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
index 8f1dda4344..84cc7421be 100644
--- a/accel/tcg/tcg-accel-ops-icount.c
+++ b/accel/tcg/tcg-accel-ops-icount.c
@@ -109,7 +109,13 @@ void icount_prepare_for_run(CPUState *cpu)
replay_mutex_lock();
if (cpu->icount_budget == 0) {
+ /*
+ * We're called without the iothread lock, so must take it while
+ * we're calling timer handlers.
+ */
+ qemu_mutex_lock_iothread();
icount_notify_aio_contexts();
+ qemu_mutex_unlock_iothread();
}
}