qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <david.gilbert@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, agraf@suse.de, patches@linaro.org
Subject: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now)
Date: Mon, 3 Oct 2011 17:33:56 +0100	[thread overview]
Message-ID: <20111003163352.GA22822@davesworkthinkpad> (raw)

  Make cpu_single_env thread local (Linux only for now)
  * Fixes some user space threading issues (esp those triggered
    by bug 823902)

Against rev d11cf8cc..., tested on ARM user mode, and ARM Vexpress
system mode (with Blue Swirl's fix from yesterday) - only
tested on Linux host.  Lets me run ARM userspace firefox.

Signed-off-by: Dr. David Alan Gilbert <david.gilbert@linaro.org>

diff --git a/cpu-all.h b/cpu-all.h
index 42a5fa0..d895ee6 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -334,7 +334,13 @@ void cpu_dump_statistics(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
 void QEMU_NORETURN cpu_abort(CPUState *env, const char *fmt, ...)
     GCC_FMT_ATTR(2, 3);
 extern CPUState *first_cpu;
+
+#ifdef __linux__
+/* DAG: Only tested thread local on Linux, feel free to add others */
+extern __thread CPUState *cpu_single_env;
+#else
 extern CPUState *cpu_single_env;
+#endif
 
 /* Flags for use in ENV->INTERRUPT_PENDING.
 
diff --git a/exec.c b/exec.c
index d0cbf15..b82d8e4 100644
--- a/exec.c
+++ b/exec.c
@@ -120,7 +120,12 @@ static MemoryRegion *system_io;
 CPUState *first_cpu;
 /* current CPU in the current thread. It is only valid inside
    cpu_exec() */
+#ifdef __linux__
+/* DAG: Only tested thread local on Linux, feel free to add others */
+__thread CPUState *cpu_single_env;
+#else
 CPUState *cpu_single_env;
+#endif
 /* 0 = Do not count executed instructions.
    1 = Precise instruction counting.
    2 = Adaptive rate instruction counting.  */

             reply	other threads:[~2011-10-03 16:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-03 16:33 Dr. David Alan Gilbert [this message]
2011-10-03 17:51 ` [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now) Jan Kiszka
2011-10-04 15:10   ` Lluís Vilanova
2011-10-04 17:26     ` Jan Kiszka
2011-10-05  7:08       ` Paolo Bonzini
2011-10-05  7:52         ` Jan Kiszka
2011-10-05  9:21           ` Paolo Bonzini
2011-10-07 17:29             ` David Gilbert
2011-10-08 13:41               ` Paolo Bonzini
2011-10-26 14:03             ` Peter Maydell
2011-10-26 14:39               ` Paolo Bonzini
2011-10-26 14:54                 ` Peter Maydell
2011-10-26 14:59                   ` Paolo Bonzini
2011-10-26 15:02                   ` Jan Kiszka
2011-10-26 15:09                     ` Peter Maydell
2011-10-26 15:13                       ` Jan Kiszka
2011-10-26 15:18                         ` Peter Maydell
2011-10-26 16:02                           ` Jan Kiszka
2011-10-26 16:27                             ` Andreas Färber
2011-10-26 16:31                               ` Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111003163352.GA22822@davesworkthinkpad \
    --to=david.gilbert@linaro.org \
    --cc=agraf@suse.de \
    --cc=patches@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).