[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread |
Date: |
Tue, 22 Jun 2010 00:13:32 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
Jan Kiszka wrote:
> And there is some race that cause a lock up in qemu_mutex_lock_iothread
> after a while (the cpu_unlink_tb seems to race with the linking - just a
> guess so far).
This seems to fix a long-standing race between cpu_exec and
signal-driven cpu_unlink_tb:
diff --git a/cpu-exec.c b/cpu-exec.c
index 026980a..bfc34e4 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -599,8 +598,9 @@ int cpu_exec(CPUState *env1)
TB, but before it is linked into a potentially
infinite loop and becomes env->current_tb. Avoid
starting execution if there is a pending interrupt. */
- if (!unlikely (env->exit_request)) {
- env->current_tb = tb;
+ env->current_tb = tb;
+ asm("");
+ if (likely(!env->exit_request)) {
tc_ptr = tb->tc_ptr;
/* execute the generated code */
#if defined(__sparc__) && !defined(CONFIG_SOLARIS)
@@ -609,7 +609,6 @@ int cpu_exec(CPUState *env1)
#define env cpu_single_env
#endif
next_tb = tcg_qemu_tb_exec(tc_ptr);
- env->current_tb = NULL;
if ((next_tb & 3) == 2) {
/* Instruction counter expired. */
int insns_left;
@@ -638,6 +637,7 @@ int cpu_exec(CPUState *env1)
}
}
}
+ env->current_tb = NULL;
/* reset soft MMU for next block (it can currently
only be set by a memory fault) */
} /* for(;;) */
Still testing, though.
Jan
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] smp broken in tcg mode with --enable-io-thread?, Jan Kiszka, 2010/06/18
- Re: [Qemu-devel] smp broken in tcg mode with --enable-io-thread?, Anthony Liguori, 2010/06/18
- [Qemu-devel] [PATCH] fix smp with tcg mode and --enable-io-thread, Marcelo Tosatti, 2010/06/21
- [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Jan Kiszka, 2010/06/21
- [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Jan Kiszka, 2010/06/21
- [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Marcelo Tosatti, 2010/06/21
- [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Jan Kiszka, 2010/06/22
- [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Jan Kiszka, 2010/06/23
- Re: [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Anthony Liguori, 2010/06/23
- [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread,
Jan Kiszka <=
- Re: [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Alexander Graf, 2010/06/21
- Re: [Qemu-devel] Re: [PATCH] fix smp with tcg mode and --enable-io-thread, Jan Kiszka, 2010/06/22