[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 5/8] Fix qemu_wait_io_event processing in io-thread
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH 5/8] Fix qemu_wait_io_event processing in io-thread mode |
Date: |
Fri, 25 Jun 2010 16:56:53 +0200 |
When checking for I/O events in the tcg CPU loop, make sure that we
call qemu_wait_io_event_common for all CPUs, not only the current one.
Otherwise pause_all_vcpus may lock up or run_on_cpu requests may starve.
Rename qemu_wait_io_event to qemu_tcg_wait_io_event at this chance and
purge its argument list as it has no use for it.
Signed-off-by: Jan Kiszka <address@hidden>
---
cpus.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/cpus.c b/cpus.c
index ff5e804..aef92cd 100644
--- a/cpus.c
+++ b/cpus.c
@@ -402,10 +402,12 @@ static void qemu_wait_io_event_common(CPUState *env)
flush_queued_work(env);
}
-static void qemu_wait_io_event(CPUState *env)
+static void qemu_tcg_wait_io_event(void)
{
+ CPUState *env;
+
while (!tcg_has_work())
- qemu_cond_timedwait(env->halt_cond, &qemu_global_mutex, 1000);
+ qemu_cond_timedwait(tcg_halt_cond, &qemu_global_mutex, 1000);
qemu_mutex_unlock(&qemu_global_mutex);
@@ -418,7 +420,10 @@ static void qemu_wait_io_event(CPUState *env)
qemu_mutex_unlock(&qemu_fair_mutex);
qemu_mutex_lock(&qemu_global_mutex);
- qemu_wait_io_event_common(env);
+
+ for (env = first_cpu; env != NULL; env = env->next_cpu) {
+ qemu_wait_io_event_common(env);
+ }
}
static void qemu_kvm_eat_signal(CPUState *env, int timeout)
@@ -503,7 +508,7 @@ static void *tcg_cpu_thread_fn(void *arg)
while (1) {
tcg_cpu_exec();
- qemu_wait_io_event(cur_cpu);
+ qemu_tcg_wait_io_event();
}
return NULL;
--
1.7.1
- [Qemu-devel] [PATCH 0/8] Fix various IO-thread breakages, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 6/8] Drop redundant global cur_cpu variable, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 8/8] Rework debug exception processing for gdb use, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 3/8] Init qemu_system_cond, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 1/8] Introduce proper compiler barrier, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 2/8] Fix cpu_unlink_tb race, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 5/8] Fix qemu_wait_io_event processing in io-thread mode,
Jan Kiszka <=
- [Qemu-devel] [PATCH 4/8] Fix cpu_exit for tcp_cpu_exec, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 7/8] Rename tcg_cpu_exec and tcg_has_work, Jan Kiszka, 2010/06/25
- [Qemu-devel] Re: [PATCH 0/8] Fix various IO-thread breakages, Paolo Bonzini, 2010/06/27
- [Qemu-devel] Re: [PATCH 0/8] Fix various IO-thread breakages, Marcelo Tosatti, 2010/06/28