percpu: Avoid extra NOP in percpu_cmpxchg16b_double
authorEric Dumazet <eric.dumazet@gmail.com>
Mon, 28 Mar 2011 16:06:58 +0000 (18:06 +0200)
committerTejun Heo <tj@kernel.org>
Mon, 28 Mar 2011 16:06:58 +0000 (18:06 +0200)
commit5f55924deaa62d6df687c131fb92aebe071ec787
tree2888f5163793d9b37ff6726e470853d5d727abe3
parent787e5b06a80e7fc9dc02d9b53a9d8d2ac63b7ace
percpu: Avoid extra NOP in percpu_cmpxchg16b_double

percpu_cmpxchg16b_double() uses alternative_io() and looks like :

e8 .. .. .. ..  call this_cpu_cmpxchg16b_emu
X bytes     NOPX

or, once patched (if cpu supports native instruction) on SMP build :

65 48 0f c7 0e  cmpxchg16b %gs:(%rsi)
0f 94 c0        sete %al

on !SMP build :

48 0f c7 0e     cmpxchg16b (%rsi)
0f 94 c0        sete %al

Therefore, NOPX should be :

P6_NOP3 on SMP
P6_NOP2 on !SMP

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Christoph Lameter <cl@linux.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
arch/x86/include/asm/percpu.h