linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andi Kleen <ak@suse.de>
To: davidm@hpl.hp.com
Cc: Andi Kleen <ak@suse.de>, Rusty Russell <rusty@rustcorp.com.au>,
	linux-kernel@vger.kernel.org, torvalds@transmeta.com,
	rth@twiddle.net
Subject: Re: [PATCH] 2.5.1-pre5: per-cpu areas
Date: Thu, 14 Mar 2002 19:51:22 +0100	[thread overview]
Message-ID: <20020314195122.A30566@wotan.suse.de> (raw)
In-Reply-To: <15504.7958.677592.908691@napali.hpl.hp.com.suse.lists.linux.kernel> <E16lMzi-0002bb-00@wagner.rustcorp.com.au.suse.lists.linux.kernel> <p73bsdrsftu.fsf@oldwotan.suse.de> <15504.58901.82038.420706@napali.hpl.hp.com>
In-Reply-To: <15504.58901.82038.420706@napali.hpl.hp.com>

On Thu, Mar 14, 2002 at 10:04:05AM -0800, David Mosberger wrote:
> How about the following proposal:
> 
> 	- taking the address of this_cpu(var) is never allowed (can be
>           enforced with RELOC_HIDE())
> 
> 	- taking the address of per_cpu(var, n) is always legal and
> 	  will return a pointer which will access CPU n's version of
> 	  the variable, no matter what CPU dereferences the pointer
> 
> Andi, I think this would take care of the x86-64 problem as well, right?

Yes, it would. 

It would be a bit more overhead for taking the address than a 
this_cpu_address(), because one would need to fetch the CPU number first
and do the arithmetic and the array reference instead of fetching the 
address directly. But I agree that per_cpu() has much cleaner semantics than
this_cpu_address() for addresses, so it is worth it.

When one considers preemptive kernels where you can lose your CPU anytime
then it makes even more sense. But then this_cpu is only safe there when
you turn off preemption or hold some lock or run in interrupt context.
Outside such regions per_cpu() seems to be safer. 

Thanks, 
-Andi

  reply	other threads:[~2002-03-14 18:51 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <15504.7958.677592.908691@napali.hpl.hp.com.suse.lists.linux.kernel>
     [not found] ` <E16lMzi-0002bb-00@wagner.rustcorp.com.au.suse.lists.linux.kernel>
2002-03-14  8:39   ` [PATCH] 2.5.1-pre5: per-cpu areas Andi Kleen
2002-03-14 11:09     ` Rusty Russell
2002-03-14 11:14       ` Andi Kleen
2002-03-14 19:48       ` H. Peter Anvin
2002-03-14 18:04   ` David Mosberger
2002-03-14 18:51     ` Andi Kleen [this message]
2002-03-15  4:07       ` Rusty Russell
2002-03-15  9:13         ` Andi Kleen
2002-03-17  7:17         ` Rusty Russell
2002-03-18  7:35           ` Andi Kleen
2002-03-19  0:02             ` Rusty Russell
2002-03-19  0:08               ` J.A. Magallon
2002-03-19  0:15               ` Andi Kleen
2002-03-19 17:05                 ` Richard Henderson
2002-03-15  4:19       ` David Mosberger
2002-03-15  5:52         ` Rusty Russell
     [not found] <15504.7958.677592.908691@napali.hpl.hp.com>
2002-03-14  4:37 ` Rusty Russell
2002-03-14  5:05   ` Jeff Garzik
2002-03-14 11:14     ` Rusty Russell
2002-03-14 11:26       ` Jeff Garzik
2002-03-14 12:16         ` Rusty Russell
2002-03-14 12:25           ` Jeff Garzik
2002-03-15  1:00         ` Richard Henderson
2002-03-14  9:37   ` Richard Henderson
2002-03-14 18:06   ` David Mosberger
2001-12-05 22:09 Rusty Russell
2001-12-06  7:21 ` Keith Owens
2001-12-06  8:07 ` David S. Miller
2001-12-06  9:18 ` Chris Wedgwood
2001-12-07 15:03   ` Pavel Machek

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=20020314195122.A30566@wotan.suse.de \
    --to=ak@suse.de \
    --cc=davidm@hpl.hp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rth@twiddle.net \
    --cc=rusty@rustcorp.com.au \
    --cc=torvalds@transmeta.com \
    /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).