public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC 00/15] x86_64: Optimize percpu accesses
@ 2008-07-09 16:51 Mike Travis
  2008-07-09 16:51 ` [RFC 01/15] x86_64: Cleanup early setup_percpu references Mike Travis
                   ` (18 more replies)
  0 siblings, 19 replies; 190+ messages in thread
From: Mike Travis @ 2008-07-09 16:51 UTC (permalink / raw)
  To: Jeremy Fitzhardinge
  Cc: Ingo Molnar, Andrew Morton, Eric W. Biederman, H. Peter Anvin,
	Christoph Lameter, Jack Steiner, linux-kernel


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.


Based on linux-2.6.tip/master with following patches applied:

	[PATCH 1/1] x86: Add check for node passed to node_to_cpumask V3
	[PATCH 1/1] x86: Change _node_to_cpumask_ptr to return const ptr
	[PATCH 1/1] sched: Reduce stack size in isolated_cpu_setup()
	[PATCH 1/1] kthread: Reduce stack pressure in create_kthread and kthreadd


Signed-off-by: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: Mike Travis <travis@sgi.com>
---

-- 

^ permalink raw reply	[flat|nested] 190+ messages in thread

end of thread, other threads:[~2008-07-25 18:13 UTC | newest]

Thread overview: 190+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox