]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
linux-user: enable parallel code generation on clone
authorAlex Bennée <alex.bennee@linaro.org>
Wed, 5 Oct 2016 18:13:04 +0000 (11:13 -0700)
committerRichard Henderson <rth@twiddle.net>
Wed, 26 Oct 2016 15:29:00 +0000 (08:29 -0700)
The variable parallel_cpus controls the generation of thread aware
atomic code.  We only need to set it once we clone our first thread.
At this point any existing translations need to be thrown away.

Reviewed-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
linux-user/syscall.c

index db697c0bf38a2a4942a07fe8c3296987350f24be..7b77503f94f4fe28f2ed20c25dde205a5f68366b 100644 (file)
@@ -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.  */