qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 07/35] HACK: Always enable parallel_cpus


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH v4 07/35] HACK: Always enable parallel_cpus
Date: Tue, 04 Oct 2016 14:29:08 +0100
User-agent: mu4e 0.9.17; emacs 25.1.50.3

Richard Henderson <address@hidden> writes:

> This is really just a placeholder for an actual
> command-line switch for mttcg.
> ---
>  translate-all.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/translate-all.c b/translate-all.c
> index 70f3959..c860cfc 100644
> --- a/translate-all.c
> +++ b/translate-all.c
> @@ -119,7 +119,7 @@ static void *l1_map[V_L1_SIZE];
>
>  /* code generation context */
>  TCGContext tcg_ctx;
> -bool parallel_cpus;
> +bool parallel_cpus = 1;
>
>  /* translation block context */
>  #ifdef CONFIG_USER_ONLY

Can we replace with:

linux-user: enable parallel code generation on clone

The variable parallel_cpus controls the generation of thread aware
atomic code. We only need to set it once we have cloned our first
thread. At this point any existing translations need to be thrown away.

Signed-off-by: Alex Bennée <address@hidden>

2 files changed, 10 insertions(+), 1 deletion(-)
linux-user/syscall.c | 9 +++++++++
translate-all.c      | 2 +-

modified   linux-user/syscall.c
@@ -6144,6 +6144,15 @@ 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 the 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.  */

modified   translate-all.c
@@ -119,7 +119,7 @@ static void *l1_map[V_L1_SIZE];

 /* code generation context */
 TCGContext tcg_ctx;
-bool parallel_cpus = 1;
+bool parallel_cpus;

 /* translation block context */
 #ifdef CONFIG_USER_ONLY



reply via email to

[Prev in Thread] Current Thread [Next in Thread]