core: Replace __get_cpu_var with __this_cpu_read if not used for an address.
authorChristoph Lameter <cl@linux.com>
Wed, 8 Dec 2010 15:22:55 +0000 (16:22 +0100)
committerTejun Heo <tj@kernel.org>
Fri, 17 Dec 2010 14:07:19 +0000 (15:07 +0100)
commit909ea96468096b07fbb41aaf69be060d92bd9271
treea7e015edd96b5f674874fe78cdd889769e130a2a
parent780f36d8b3fa9572f731d4fb85067b2e45e6f993
core: Replace __get_cpu_var with __this_cpu_read if not used for an address.

__get_cpu_var() can be replaced with this_cpu_read and will then use a
single read instruction with implied address calculation to access the
correct per cpu instance.

However, the address of a per cpu variable passed to __this_cpu_read()
cannot be determined (since it's an implied address conversion through
segment prefixes).  Therefore apply this only to uses of __get_cpu_var
where the address of the variable is not used.

Cc: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Hugh Dickins <hughd@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
13 files changed:
include/asm-generic/irq_regs.h
include/linux/elevator.h
include/linux/kernel_stat.h
kernel/exit.c
kernel/fork.c
kernel/hrtimer.c
kernel/printk.c
kernel/rcutree.c
kernel/softirq.c
kernel/time/tick-common.c
kernel/time/tick-oneshot.c
kernel/watchdog.c
mm/slab.c