From: Steven Rostedt <rostedt@goodmis.org>
To: Richard Henderson <rth@twiddle.net>
Cc: Paul Mackerras <paulus@samba.org>,
t@twiddle.net, linux-kernel@vger.kernel.org,
linux-arch@vger.kernel.org, linuxppc-dev@ozlabs.org
Subject: Re: [RFC/PATCH] Make powerpc64 use __thread for per-cpu variables
Date: Wed, 10 May 2006 14:04:18 -0400 (EDT) [thread overview]
Message-ID: <Pine.LNX.4.58.0605101400530.20305@gandalf.stny.rr.com> (raw)
In-Reply-To: <20060510154702.GA28938@twiddle.net>
On Wed, 10 May 2006, Richard Henderson wrote:
> On Wed, May 10, 2006 at 02:03:59PM +1000, Paul Mackerras wrote:
> > With this patch, 64-bit powerpc uses __thread for per-cpu variables.
>
> How do you plan to address the compiler optimizing
>
> __thread int foo;
> {
> use(foo);
> schedule();
> use(foo);
> }
>
> into
>
> {
> int *tmp = &foo; // tls arithmetic here
> use(*tmp);
> schedule();
> use(*tmp);
> }
>
> Across the schedule, we may have changed cpus, making the cached
> address invalid.
>
If you mean use(foo) is the same as per_cpu(foo), I can't see the compile
optimizing this:
+#define per_cpu(var, cpu) \
+ (*(__typeof__(&per_cpu__##var))({ \
+ void *__ptr; \
+ asm("addi %0,%1,per_cpu__"#var"@tprel" \
+ : "=b" (__ptr) \
+ : "b" (paca[(cpu)].thread_ptr)); \
+ __ptr; \
+ }))
Anyway, per_cpu variables are usually used with preemption turned off and
no need to schedule.
-- Steve
next prev parent reply other threads:[~2006-05-10 18:04 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-10 4:03 [RFC/PATCH] Make powerpc64 use __thread for per-cpu variables Paul Mackerras
2006-05-10 5:16 ` Olof Johansson
2006-05-10 5:35 ` Alan Modra
2006-05-10 6:22 ` David S. Miller
2006-05-10 6:29 ` Paul Mackerras
2006-05-10 6:39 ` David S. Miller
2006-05-10 7:21 ` Benjamin Herrenschmidt
2006-05-10 7:41 ` Paul Mackerras
2006-05-10 10:14 ` David Howells
2006-05-10 15:47 ` Richard Henderson
2006-05-10 18:04 ` Steven Rostedt [this message]
2006-05-10 19:40 ` David S. Miller
2006-05-10 21:05 ` Paul Mackerras
2006-05-10 22:25 ` David S. Miller
2006-05-10 23:17 ` Segher Boessenkool
2006-05-11 0:22 ` Richard Henderson
2006-05-11 23:41 ` Segher Boessenkool
2006-05-11 1:04 ` Alan Modra
2006-05-11 1:21 ` Paul Mackerras
2006-05-11 2:01 ` Alan Modra
2006-05-11 23:42 ` Segher Boessenkool
2006-05-10 23:05 ` Paul Mackerras
2006-05-10 23:44 ` Paul Mackerras
2006-05-11 0:11 ` David S. Miller
2006-05-18 23:50 ` Paul Mackerras
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=Pine.LNX.4.58.0605101400530.20305@gandalf.stny.rr.com \
--to=rostedt@goodmis.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
--cc=rth@twiddle.net \
--cc=t@twiddle.net \
/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).