[PATCH 0/4] x86_64: Optimize percpu accesses

Mike Travis
2008-07-25T21:12:23Z

This patchset provides the following:

* x86_64: Cleanup setup_percpu by fixing some minor potential
problems as well as add some debugging aids.

* x86_64: Rebase per cpu variables to zero

Rebase per cpu variables to zero in preparation for the following
patch to fold the pda into the per cpu area.

* x86_64: Fold pda into per cpu area

Declare the pda as a per cpu variable. This will allow the per cpu
variables to be accessible on the x86_64 using %gs as the base of
the percpu areas for each cpu:

%gs:per_cpu_xxxx

* x86_64: Reference zero-based percpu variables offset from gs

Actually implement the above operation for __get_cpu_var() and
__put_cpu_var(). Since this is now a single instruction, we
can remove the non-preemptible versions of x86_read_percpu()
and x86_write_percpu().

Note that the following changes are NOT in this patchset as the plan now
seems to be that the common (to x86) variables that are in the pda should
be made individual per cpu variables, leaving only the stack canary in place.

* x86_64: Replace cpu_pda ops with percpu ops
* x86_64: Replace xxx_pda() operations with x86_xxx_percpu().
* x86_64: Remove xxx_pda() operations
* x86_64: Remove cpu_pda() macro

Based on linux-2.6.tip/master.

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

--