From: Andi Kleen <ak@suse.de>
To: Christoph Lameter <clameter@sgi.com>
Cc: Ingo Molnar <mingo@elte.hu>,
Michal Piotrowski <michal.k.k.piotrowski@gmail.com>,
Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org
Subject: Re: broken local_t on i386
Date: Mon, 12 Jun 2006 19:06:28 +0200 [thread overview]
Message-ID: <200606121906.28692.ak@suse.de> (raw)
In-Reply-To: <Pine.LNX.4.64.0606120950280.19309@schroedinger.engr.sgi.com>
On Monday 12 June 2006 18:54, Christoph Lameter wrote:
> On Mon, 12 Jun 2006, Andi Kleen wrote:
>
> > > #define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()))
> >
> > It is also affected by your race. The inc would only be atomic if the counter
> > was in the PDA, but standard per cpu data isn't. So it has to follow
> > a pointer and then it could already have switched.
>
> I thought the above would refer to a PDA memory area that is specially
> mapped by each processor? That is the only thing that would get this
> working right because we would map to a different PDA if the process
> would be mapped to a different processor.
It does, but the per cpu data that everybody uses doesn't reside in the PDA
because it wasn't possible to make this work with binutils
It would require a relocation relative to another symbol which isn't
really supported.
At some point I considered using runtime patching to work around
this limitation, but it would be some work and relatively complex.
So the PDA just contains a pointer to the real per CPU area and it's
added. Unfortunately it's three instructions or so and not atomic
(mov, add, reference)
>
> > Fix would be to disable preemption. I don't think it needs cli/sti
> > on non preemptible kernels.
>
> Yuck. The advantage of local.t was that it does not need any of these
> tricks. What is the point of local.t if one needs to disable preemption?
No atomic operations. Preemption just requires to increase a counter
in thread info.
Also on non preemptive kernels - which are the majority - it's a single
instruction on x86. I guess preempt users can live with a bit more
overhead ...
-Andi
next prev parent reply other threads:[~2006-06-12 17:06 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-10 4:40 2.6.16-rc6-mm2 Andrew Morton
2006-06-10 10:23 ` 2.6.16-rc6-mm2 Michal Piotrowski
2006-06-10 16:24 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-10 16:43 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-10 16:51 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-10 17:03 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-10 18:04 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-10 18:14 ` 2.6.16-rc6-mm2 Michal Piotrowski
2006-06-10 18:31 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-10 18:35 ` 2.6.16-rc6-mm2 Michal Piotrowski
2006-06-12 11:05 ` 2.6.16-rc6-mm2 Ingo Molnar
2006-06-12 11:48 ` 2.6.16-rc6-mm2 Ingo Molnar
2006-06-12 12:14 ` 2.6.16-rc6-mm2 Andi Kleen
2006-06-12 13:07 ` 2.6.16-rc6-mm2 Ingo Molnar
2006-06-12 13:41 ` 2.6.16-rc6-mm2 Andi Kleen
2006-06-13 3:28 ` 2.6.16-rc6-mm2 Keith Owens
2006-06-13 4:56 ` 2.6.16-rc6-mm2 Andi Kleen
2006-06-13 5:08 ` 2.6.16-rc6-mm2 Keith Owens
2006-06-13 5:18 ` 2.6.16-rc6-mm2 Andi Kleen
2006-06-13 5:43 ` 2.6.16-rc6-mm2 Nick Piggin
2006-06-13 5:48 ` 2.6.16-rc6-mm2 Andi Kleen
2006-06-13 11:45 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-13 12:41 ` 2.6.16-rc6-mm2 Keith Owens
2006-06-12 16:37 ` broken local_t on i386 Christoph Lameter
2006-06-12 16:48 ` Andi Kleen
2006-06-12 16:54 ` Christoph Lameter
2006-06-12 17:06 ` Andi Kleen [this message]
2006-06-12 17:11 ` Christoph Lameter
2006-06-12 17:29 ` Andi Kleen
2006-06-12 18:14 ` Lee Revell
2006-06-12 18:46 ` Alan Cox
2006-06-12 18:27 ` Christoph Lameter
2006-06-12 17:35 ` Andi Kleen
2006-06-12 18:42 ` Christoph Lameter
2006-06-12 17:55 ` Andi Kleen
2006-06-12 18:59 ` Christoph Lameter
2006-06-12 18:11 ` Andi Kleen
2006-06-12 19:15 ` Christoph Lameter
2006-06-13 3:36 ` Andi Kleen
2006-06-12 20:12 ` Alan Cox
2006-06-13 4:02 ` Andi Kleen
2006-06-12 13:50 ` 2.6.16-rc6-mm2 Michal Piotrowski
2006-06-12 14:20 ` 2.6.16-rc6-mm2 Ingo Molnar
2006-06-12 14:57 ` 2.6.16-rc6-mm2 Michal Piotrowski
[not found] ` <6bffcb0e0606101126v55cc20dbk275d8aa7fdcb0f1a@mail.gmail.com>
2006-06-10 18:36 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-10 19:08 ` 2.6.16-rc6-mm2 Michal Piotrowski
2006-06-10 16:58 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-10 14:56 ` 2.6.16-rc6-mm2 Martin J. Bligh
2006-06-10 16:43 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-10 16:18 ` 2.6.16-rc6-mm2 Dominik Karall
2006-06-10 16:25 ` 2.6.16-rc6-mm2 Michal Piotrowski
2006-06-10 17:42 ` 2.6.16-rc6-mm2 Dominik Karall
2006-06-10 18:43 ` 2.6.16-rc6-mm2 Rafael J. Wysocki
2006-06-11 10:17 ` 2.6.16-rc6-mm2 Jan Engelhardt
2006-06-11 10:58 ` 2.6.16-rc6-mm2 Rafael J. Wysocki
2006-06-12 16:56 ` 2.6.16-rc6-mm2 Zan Lynx
2006-06-12 17:35 ` 2.6.16-rc6-mm2 Cedric Le Goater
2006-06-12 22:16 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-13 0:24 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-14 21:56 ` 2.6.16-rc6-mm2 Trond Myklebust
2006-06-13 7:22 ` 2.6.16-rc6-mm2 Cedric Le Goater
2006-06-13 17:54 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-13 19:35 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-13 20:22 ` 2.6.16-rc6-mm2 Cedric Le Goater
2006-06-13 21:13 ` 2.6.16-rc6-mm2 Christoph Lameter
2006-06-13 21:50 ` 2.6.16-rc6-mm2 Cedric Le Goater
2006-06-12 18:19 ` 2.6.16-rc6-mm2 Badari Pulavarty
2006-06-13 13:54 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-13 17:04 ` 2.6.16-rc6-mm2 Badari Pulavarty
2006-06-12 22:09 ` 2.6.16-rc6-mm2 Steve Fox
2006-06-13 13:54 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-13 14:10 ` 2.6.16-rc6-mm2 Sergei Shtylyov
2006-06-13 19:01 ` 2.6.16-rc6-mm2 Steve Fox
2006-06-13 21:43 ` 2.6.16-rc6-mm2 Andrew Morton
2006-06-13 21:51 ` 2.6.16-rc6-mm2 Badari Pulavarty
2006-06-13 22:36 ` 2.6.16-rc6-mm2 Steve Fox
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=200606121906.28692.ak@suse.de \
--to=ak@suse.de \
--cc=akpm@osdl.org \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.k.k.piotrowski@gmail.com \
--cc=mingo@elte.hu \
/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