All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Travis <travis@sgi.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Ingo Molnar <mingo@elte.hu>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Christoph Lameter <cl@linux-foundation.org>,
	Jack Steiner <steiner@sgi.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC 00/15] x86_64: Optimize percpu accesses
Date: Wed, 09 Jul 2008 11:00:07 -0700	[thread overview]
Message-ID: <4874FCA7.3010507@sgi.com> (raw)
In-Reply-To: <4874F4F2.9010603@goop.org>

Jeremy Fitzhardinge wrote:
> Mike Travis wrote:
>> This patchset provides the following:
>>
>>   * Cleanup: Fix early references to cpumask_of_cpu(0)
>>
>>     Provides an early cpumask_of_cpu(0) usable before the
>> cpumask_of_cpu_map
>>     is allocated and initialized.
>>
>>   * Generic: Percpu infrastructure to rebase the per cpu area to zero
>>
>>     This provides for the capability of accessing the percpu variables
>>     using a local register instead of having to go through a table
>>     on node 0 to find the cpu-specific offsets.  It also would allow
>>     atomic operations on percpu variables to reduce required locking.
>>     Uses a new config var HAVE_ZERO_BASED_PER_CPU to indicate to the
>>     generic code that the arch has this new basing.
>>
>>     (Note: split into two patches, one to rebase percpu variables at 0,
>>     and the second to actually use %gs as the base for percpu variables.)
>>
>>   * x86_64: Fold pda into per cpu area
>>
>>     Declare the pda as a per cpu variable. This will move the pda
>>     area to an address accessible by the x86_64 per cpu macros.
>>     Subtraction of __per_cpu_start will make the offset based from
>>     the beginning of the per cpu area.  Since %gs is pointing to the
>>     pda, it will then also point to the per cpu variables and can be
>>     accessed thusly:
>>
>>     %gs:[&per_cpu_xxxx - __per_cpu_start]
>>
>>   * x86_64: Rebase per cpu variables to zero
>>
>>     Take advantage of the zero-based per cpu area provided above.
>>     Then we can directly use the x86_32 percpu operations. x86_32
>>     offsets %fs by __per_cpu_start. x86_64 has %gs pointing directly
>>     to the pda and the per cpu area thereby allowing access to the
>>     pda with the x86_64 pda operations and access to the per cpu
>>     variables using x86_32 percpu operations.
> 
> The bulk of this series is pda_X to x86_X_percpu conversion.  This seems
> like pointless churn to me; there's nothing inherently wrong with the
> pda_X interfaces, and doing this transformation doesn't get us any
> closer to unifying 32 and 64 bit.
> 
> I think we should start devolving things out of the pda in the other
> direction: make a series where each patch takes a member of struct
> x8664_pda, converts it to a per-cpu variable (where possible, the same
> one that 32-bit uses), and updates all the references accordingly.  When
> the pda is as empty as it can be, we can look at removing the
> pda-specific interfaces.
> 
>    J

I did compartmentalize the changes so they were in separate patches,
and in particular, by separating the changes to the include files, I
was able to zero in on some problems much easier.

But I have no objections to leaving the cpu_pda ops in place and then,
as you're suggesting, extract and modify the fields as appropriate.

Another approach would be to leave the changes from XXX_pda() to
x86_percpu_XXX in place, and do the patches with simply changing
pda.VAR to VAR .)

In any case I would like to get this version working first, before
attempting that rewrite, as that won't change the generated code.

Btw, while I've got your attention... ;-), there's some code in
arch/x86/xen/smp.c:xen_smp_prepare_boot_cpu() that should be looked
at closer for zero-based per_cpu__gdt_page:

	make_lowmem_page_readwrite(&per_cpu__gdt_page);

(I wasn't sure how to deal with this but I suspect the __percpu_offset[]
or __per_cpu_load should be added to it.)

Thanks,
Mike

  parent reply	other threads:[~2008-07-09 18:00 UTC|newest]

Thread overview: 190+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-09 16:51 [RFC 00/15] x86_64: Optimize percpu accesses Mike Travis
2008-07-09 16:51 ` [RFC 01/15] x86_64: Cleanup early setup_percpu references Mike Travis
2008-07-09 16:51 ` [RFC 02/15] x86_64: Fold pda into per cpu area Mike Travis
2008-07-09 22:02   ` Eric W. Biederman
2008-07-13 17:54     ` Ingo Molnar
2008-07-14 14:24       ` Mike Travis
2008-07-09 16:51 ` [RFC 03/15] x86_64: Reference zero-based percpu variables offset from gs Mike Travis
2008-07-09 16:51 ` [RFC 04/15] x86_64: Replace cpu_pda ops with percpu ops Mike Travis
2008-07-09 16:51 ` [RFC 05/15] x86_64: Replace xxx_pda() operations with x86_xxx_percpu() Mike Travis
2008-07-09 16:51 ` [RFC 06/15] x86_64: Replace xxx_pda() operations in include_asm-x86_current_h Mike Travis
2008-07-09 16:51 ` [RFC 07/15] x86_64: Replace xxx_pda() operations in include_asm-x86_hardirq_64_h Mike Travis
2008-07-09 16:51 ` [RFC 08/15] x86_64: Replace xxx_pda() operations in include_asm-x86_mmu_context_64_h Mike Travis
2008-07-09 16:51 ` [RFC 09/15] x86_64: Replace xxx_pda() operations in include_asm-x86_percpu_h Mike Travis
2008-07-09 16:51 ` [RFC 10/15] x86_64: Replace xxx_pda() operations in include_asm-x86_smp_h Mike Travis
2008-07-09 16:51 ` [RFC 11/15] x86_64: Replace xxx_pda() operations in include_asm-x86_stackprotector_h Mike Travis
2008-07-09 16:51 ` [RFC 12/15] x86_64: Replace xxx_pda() operations in include_asm-x86_thread_info_h Mike Travis
2008-07-09 16:51 ` [RFC 13/15] x86_64: Replace xxx_pda() operations in include_asm-x86_topology_h Mike Travis
2008-07-09 16:51 ` [RFC 14/15] x86_64: Remove xxx_pda() operations Mike Travis
2008-07-09 16:51 ` [RFC 15/15] x86_64: Remove cpu_pda() macro Mike Travis
2008-07-09 17:19 ` [RFC 00/15] x86_64: Optimize percpu accesses H. Peter Anvin
2008-07-09 17:40   ` Mike Travis
2008-07-09 17:42     ` H. Peter Anvin
2008-07-09 18:05       ` Mike Travis
2008-07-09 17:44   ` Jeremy Fitzhardinge
2008-07-09 18:09     ` Mike Travis
2008-07-09 18:30       ` H. Peter Anvin
2008-07-09 19:34       ` Ingo Molnar
2008-07-09 19:44         ` H. Peter Anvin
2008-07-09 20:26           ` Adrian Bunk
2008-07-09 21:03         ` Mike Travis
2008-07-09 21:23         ` Jeremy Fitzhardinge
2008-07-25 15:49     ` Mike Travis
2008-07-25 16:08       ` Jeremy Fitzhardinge
2008-07-25 16:46         ` Mike Travis
2008-07-25 16:58           ` Jeremy Fitzhardinge
2008-07-25 18:12             ` Mike Travis
2008-07-09 17:27 ` Jeremy Fitzhardinge
2008-07-09 17:39   ` Christoph Lameter
2008-07-09 17:51     ` Jeremy Fitzhardinge
2008-07-09 18:14       ` Mike Travis
2008-07-09 18:22         ` Jeremy Fitzhardinge
2008-07-09 18:31           ` Mike Travis
2008-07-09 19:08             ` Jeremy Fitzhardinge
2008-07-09 18:02     ` Mike Travis
2008-07-09 18:13       ` Christoph Lameter
2008-07-09 18:26         ` Jeremy Fitzhardinge
2008-07-09 18:34           ` Christoph Lameter
2008-07-09 18:37             ` H. Peter Anvin
2008-07-09 18:48             ` Jeremy Fitzhardinge
2008-07-09 18:53               ` Christoph Lameter
2008-07-09 19:07                 ` Jeremy Fitzhardinge
2008-07-09 19:12                   ` Christoph Lameter
2008-07-09 19:32                     ` Jeremy Fitzhardinge
2008-07-09 19:41                       ` Ingo Molnar
2008-07-09 19:45                         ` H. Peter Anvin
2008-07-09 19:52                         ` Christoph Lameter
2008-07-09 20:00                           ` Ingo Molnar
2008-07-09 20:09                             ` Jeremy Fitzhardinge
2008-07-09 21:05                         ` Mike Travis
2008-07-09 19:44                       ` Christoph Lameter
2008-07-09 19:48                         ` Jeremy Fitzhardinge
2008-07-09 18:27         ` Mike Travis
2008-07-09 18:46           ` Jeremy Fitzhardinge
2008-07-09 20:22             ` Eric W. Biederman
2008-07-09 20:35               ` Jeremy Fitzhardinge
2008-07-09 20:53                 ` Eric W. Biederman
2008-07-09 21:03                   ` Ingo Molnar
2008-07-09 21:16                   ` H. Peter Anvin
2008-07-09 21:10               ` Arjan van de Ven
2008-07-09 23:20                 ` Eric W. Biederman
2008-07-09 18:31         ` H. Peter Anvin
2008-07-09 18:00   ` Mike Travis [this message]
2008-07-09 19:05     ` Jeremy Fitzhardinge
2008-07-09 19:28 ` Ingo Molnar
2008-07-09 20:55   ` Mike Travis
2008-07-09 21:12     ` Ingo Molnar
2008-07-09 20:00 ` Eric W. Biederman
2008-07-09 20:05   ` Jeremy Fitzhardinge
2008-07-09 20:15     ` Ingo Molnar
2008-07-09 20:07   ` Ingo Molnar
2008-07-09 20:11     ` Jeremy Fitzhardinge
2008-07-09 20:18       ` Christoph Lameter
2008-07-09 20:33         ` Jeremy Fitzhardinge
2008-07-09 20:42           ` H. Peter Anvin
2008-07-09 20:48             ` Jeremy Fitzhardinge
2008-07-09 21:06               ` Eric W. Biederman
2008-07-09 21:16                 ` H. Peter Anvin
2008-07-09 21:20                 ` Jeremy Fitzhardinge
2008-07-09 21:25           ` Christoph Lameter
2008-07-09 21:36             ` H. Peter Anvin
2008-07-09 21:41             ` Jeremy Fitzhardinge
2008-07-09 22:22             ` Eric W. Biederman
2008-07-09 22:32               ` Jeremy Fitzhardinge
2008-07-09 23:36                 ` Eric W. Biederman
2008-07-10  0:19                   ` H. Peter Anvin
2008-07-10  0:24                     ` Jeremy Fitzhardinge
2008-07-10 14:14                       ` Christoph Lameter
2008-07-10 14:26                         ` H. Peter Anvin
2008-07-10 15:26                           ` Christoph Lameter
2008-07-10 15:42                             ` H. Peter Anvin
2008-07-10 16:24                               ` Christoph Lameter
2008-07-10 16:33                                 ` H. Peter Anvin
2008-07-10 16:45                                   ` Christoph Lameter
2008-07-10 17:33                                     ` Jeremy Fitzhardinge
2008-07-10 17:42                                       ` Christoph Lameter
2008-07-10 17:53                                         ` Jeremy Fitzhardinge
2008-07-10 17:55                                           ` H. Peter Anvin
2008-07-10 20:52                                           ` Christoph Lameter
2008-07-10 20:58                                             ` Jeremy Fitzhardinge
2008-07-10 21:03                                               ` H. Peter Anvin
2008-07-11  0:55                                                 ` Mike Travis
2008-07-10 21:05                                               ` Christoph Lameter
2008-07-10 21:22                                                 ` Eric W. Biederman
2008-07-10 21:29                                                 ` H. Peter Anvin
2008-07-11  0:12                                                   ` Mike Travis
2008-07-11  0:14                                                     ` H. Peter Anvin
2008-07-11  0:58                                                       ` Mike Travis
2008-07-11  1:41                                                         ` H. Peter Anvin
2008-07-11 15:37                                                         ` Christoph Lameter
2008-07-11  0:42                                                     ` Eric W. Biederman
2008-07-11 15:36                                                     ` Christoph Lameter
2008-07-10 17:53                                     ` H. Peter Anvin
2008-07-10 17:26                                 ` Eric W. Biederman
2008-07-10 17:38                                   ` Christoph Lameter
2008-07-10 19:11                                     ` Mike Travis
2008-07-10 19:12                                     ` Eric W. Biederman
2008-07-10 17:46                                   ` Mike Travis
2008-07-10 17:51                                   ` H. Peter Anvin
2008-07-10 19:09                                     ` Eric W. Biederman
2008-07-10 19:18                                       ` Mike Travis
2008-07-10 19:32                                         ` H. Peter Anvin
2008-07-10 23:37                                           ` Mike Travis
2008-07-10 20:17                                         ` Eric W. Biederman
2008-07-10 20:24                                           ` Ingo Molnar
2008-07-10 21:33                                             ` Eric W. Biederman
2008-07-11  1:39                                           ` Mike Travis
2008-07-11  2:57                                             ` Eric W. Biederman
2008-07-10  0:23                   ` Jeremy Fitzhardinge
2008-07-09 20:35         ` H. Peter Anvin
2008-07-09 20:39       ` Arjan van de Ven
2008-07-09 20:44         ` H. Peter Anvin
2008-07-09 20:50           ` Jeremy Fitzhardinge
2008-07-09 21:12             ` H. Peter Anvin
2008-07-09 21:26               ` Jeremy Fitzhardinge
2008-07-09 21:37                 ` H. Peter Anvin
2008-07-09 22:10               ` Eric W. Biederman
2008-07-09 22:23                 ` H. Peter Anvin
2008-07-09 23:54                   ` Eric W. Biederman
2008-07-10 16:22                     ` Mike Travis
2008-07-10 16:25                       ` H. Peter Anvin
2008-07-10 16:35                         ` Christoph Lameter
2008-07-10 16:39                           ` H. Peter Anvin
2008-07-10 16:47                             ` Christoph Lameter
2008-07-10 17:21                               ` Jeremy Fitzhardinge
2008-07-10 17:31                                 ` Christoph Lameter
2008-07-10 17:48                                   ` Jeremy Fitzhardinge
2008-07-10 18:00                                   ` H. Peter Anvin
2008-07-10 17:20                         ` Mike Travis
2008-07-10 17:07                       ` Jeremy Fitzhardinge
2008-07-10 17:12                         ` Christoph Lameter
2008-07-10 17:25                           ` Jeremy Fitzhardinge
2008-07-10 17:34                             ` Christoph Lameter
2008-07-10 17:41                         ` Mike Travis
2008-07-10 18:01                           ` H. Peter Anvin
2008-07-10 20:51                             ` Christoph Lameter
2008-07-10 20:58                               ` H. Peter Anvin
2008-07-10 21:07                                 ` Christoph Lameter
2008-07-10 21:11                                   ` H. Peter Anvin
2008-07-11 15:32                                     ` Christoph Lameter
2008-07-11 16:07                                       ` H. Peter Anvin
2008-07-11 16:57                                       ` Eric W. Biederman
2008-07-11 17:10                                         ` H. Peter Anvin
2008-07-10 21:26                                   ` Eric W. Biederman
2008-07-10 18:48                       ` Eric W. Biederman
2008-07-10 18:54                         ` Jeremy Fitzhardinge
2008-07-10 19:18                           ` Eric W. Biederman
2008-07-10 19:56                             ` Jeremy Fitzhardinge
2008-07-10 20:22                               ` Eric W. Biederman
2008-07-10 20:54                                 ` Jeremy Fitzhardinge
2008-07-11  6:59                                 ` Rusty Russell
2008-07-10 20:25                               ` Eric W. Biederman
2008-07-10 17:57                     ` H. Peter Anvin
2008-07-10 18:08                     ` H. Peter Anvin
2008-07-09 20:46         ` Jeremy Fitzhardinge
2008-07-09 20:14   ` Arjan van de Ven
2008-07-09 20:33     ` Eric W. Biederman
2008-07-09 21:01       ` Ingo Molnar
2008-07-09 21:39   ` Mike Travis
2008-07-09 21:47     ` Jeremy Fitzhardinge
2008-07-09 21:55     ` Eric W. Biederman

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=4874FCA7.3010507@sgi.com \
    --to=travis@sgi.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=steiner@sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.