All of lore.kernel.org
 help / color / mirror / Atom feed
* [this_cpu_xx 00/11] Introduce this_cpu_xx operations
@ 2009-06-05 19:18 cl
  2009-06-05 19:18 ` [this_cpu_xx 01/11] Introduce this_cpu_ptr() and generic this_cpu_* operations cl
                   ` (10 more replies)
  0 siblings, 11 replies; 29+ messages in thread
From: cl @ 2009-06-05 19:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: Tejun Heo, mingo, rusty, davem

The patchset introduces various operations to allow efficient access
to per cpu variables for the current processor. Currently there is
no way in the core to calcualte the address of the instance
of a per cpu variable without a table lookup through

	per_cpu_ptr(x, smp_processor_id())

The patchset introduces a way to calculate the address using the offset
that is available in arch specific ways (register or special memory
locations) using

	this_cpu_ptr(x)

In addition operations are provided that can operate on per cpu
pointers. This is necessary to be able to use the addresses
generated by the new per cpu allocator with per cpu RMW instructions.

The arch provided RMW instructions can be used to avoid having to switch
off preemption and interrupts for per cpu counter updates.

One caveat with this patchset is that it currently does not work on S/390.
Tejun Heo has a patchset that fixes the SHIFT_PERCPU_PTR issues on that
platform. That patch is required before S/390 will work.

Patchset will reduce the code size and increase speed of operations for
dynamically allocated per cpu based statistics.

Patch shows how this could be done. There are many other places in
the code where these macros could be beneficial.

---
 

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

end of thread, other threads:[~2009-06-18  4:11 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-05 19:18 [this_cpu_xx 00/11] Introduce this_cpu_xx operations cl
2009-06-05 19:18 ` [this_cpu_xx 01/11] Introduce this_cpu_ptr() and generic this_cpu_* operations cl
2009-06-10  5:12   ` Tejun Heo
2009-06-11 15:10     ` Christoph Lameter
2009-06-12  2:09       ` Tejun Heo
2009-06-12 14:18         ` Christoph Lameter
2009-06-17  8:09           ` Tejun Heo
2009-06-17  8:19   ` Tejun Heo
2009-06-17 18:41     ` Christoph Lameter
2009-06-18  1:08       ` Tejun Heo
2009-06-18  3:01       ` Rusty Russell
2009-06-05 19:18 ` [this_cpu_xx 02/11] Use this_cpu operations for SNMP statistics cl
2009-06-05 19:18 ` [this_cpu_xx 03/11] Use this_cpu operations for NFS statistics cl
2009-06-05 19:18 ` [this_cpu_xx 04/11] Use this_cpu ops for network statistics cl
2009-06-08 11:27   ` Robin Holt
2009-06-08 20:49     ` Christoph Lameter
2009-06-08 20:54       ` Ingo Molnar
2009-06-05 19:18 ` [this_cpu_xx 05/11] this_cpu_ptr: Straight transformations cl
2009-06-05 19:18 ` [this_cpu_xx 06/11] Eliminate get/put_cpu cl
2009-06-05 19:34   ` Dan Williams
2009-06-09 14:02     ` Sosnowski, Maciej
2009-06-05 19:18 ` [this_cpu_xx 07/11] xfs_icsb_modify_counters does not need "cpu" variable cl
2009-06-05 19:22   ` Christoph Hellwig
2009-06-05 19:36     ` Christoph Lameter
2009-06-05 19:18 ` [this_cpu_xx 08/11] Use this_cpu_ptr in crypto subsystem cl
2009-06-05 19:18 ` [this_cpu_xx 09/11] X86 optimized this_cpu operations cl
2009-06-05 19:18 ` [this_cpu_xx 10/11] Use this_cpu ops for vm statistics cl
2009-06-05 19:18 ` [this_cpu_xx 11/11] RCU: Use this_cpu operations cl
2009-06-10 17:42   ` Paul E. McKenney

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.