Message ID | 1477498563-29091-10-git-send-email-rth@twiddle.net |
---|---|
State | Accepted |
Commit | b67cb68ba59fd36076e5961139cb3c953c69bed0 |
Headers | show |
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index db697c0..7b77503 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6164,6 +6164,14 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp, sigfillset(&sigmask); sigprocmask(SIG_BLOCK, &sigmask, &info.sigmask); + /* If this is our first additional thread, we need to ensure we + * generate code for parallel execution and flush old translations. + */ + if (!parallel_cpus) { + parallel_cpus = true; + tb_flush(cpu); + } + ret = pthread_create(&info.thread, &attr, clone_func, &info); /* TODO: Free new CPU state if thread creation failed. */