1
linux/arch/x86
Christoph Lameter 8270137a0d cpuops: Use cmpxchg for xchg to avoid lock semantics
Use cmpxchg instead of xchg to realize this_cpu_xchg.

xchg will cause LOCK overhead since LOCK is always implied but cmpxchg
will not.

Baselines:

xchg()		= 18 cycles (no segment prefix, LOCK semantics)
__this_cpu_xchg = 1 cycle

(simulated using this_cpu_read/write, two prefixes. Looks like the
cpu can use loop optimization to get rid of most of the overhead)

Cycles before:

this_cpu_xchg	 = 37 cycles (segment prefix and LOCK (implied by xchg))

After:

this_cpu_xchg	= 11 cycle (using cmpxchg without lock semantics)

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2010-12-18 15:54:04 +01:00
..
boot
configs
crypto crypto: ghash-intel - ghash-clmulni-intel_glue needs err.h 2010-12-15 19:44:08 +08:00
ia32 BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
include/asm cpuops: Use cmpxchg for xchg to avoid lock semantics 2010-12-18 15:54:04 +01:00
kernel lguest: populate initial_page_table 2010-12-16 17:03:15 +10:30
kvm KVM: VMX: Fix host userspace gsbase corruption 2010-11-17 19:48:05 -02:00
lguest lguest: populate initial_page_table 2010-12-16 17:03:15 +10:30
lib
math-emu
mm x86: Use online node real index in calulate_tbl_offset() 2010-11-18 10:10:50 +01:00
oprofile Merge branch 'x86' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into perf/urgent 2010-10-25 19:17:32 +02:00
pci xen: fix MSI setup and teardown for PV on HVM guests 2010-12-02 14:34:25 +00:00
platform x86: UV: Address interrupt/IO port operation conflict 2010-11-18 10:41:25 +01:00
power
tools
vdso
video
xen Merge branches 'x86-fixes-for-linus', 'perf-fixes-for-linus' and 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-12-08 06:40:59 -08:00
.gitignore
Kbuild x86: Add platform directory 2010-10-27 14:30:01 +02:00
Kconfig perf, x86: Fixup Kconfig deps 2010-11-26 15:00:58 +01:00
Kconfig.cpu x86: this_cpu_cmpxchg and this_cpu_xchg operations 2010-12-18 15:54:04 +01:00
Kconfig.debug
Makefile
Makefile_32.cpu jump label: Add work around to i386 gcc asm goto bug 2010-10-29 14:45:29 -04:00