Re: percpu: Fixup __this_cpu_xchg* operations

From: Christoph Lameter
Date: Wed Jul 06 2011 - 13:58:19 EST


Could you pick up this patch? Have not gotten a reply so far.

On Fri, 20 May 2011, Christoph Lameter wrote:

> Subject: percpu: Fixup __this_cpu_xchg* operations
>
> Somehow we got into a situation where the __this_cpu_xchg() operations were
> not defined in the same way as this_cpu_xchg() and friends. I had some build
> failures under 32 bit that were addressed by these fixes.
>
> Signed-off-by: Christoph Lameter <cl@xxxxxxxxx>
>
>
> ---
> arch/x86/include/asm/percpu.h | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> Index: linux-2.6/arch/x86/include/asm/percpu.h
> ===================================================================
> --- linux-2.6.orig/arch/x86/include/asm/percpu.h 2011-03-30 14:09:28.000000000 -0500
> +++ linux-2.6/arch/x86/include/asm/percpu.h 2011-03-30 14:10:16.000000000 -0500
> @@ -388,12 +388,9 @@ do { \
> #define __this_cpu_xor_1(pcp, val) percpu_to_op("xor", (pcp), val)
> #define __this_cpu_xor_2(pcp, val) percpu_to_op("xor", (pcp), val)
> #define __this_cpu_xor_4(pcp, val) percpu_to_op("xor", (pcp), val)
> -/*
> - * Generic fallback operations for __this_cpu_xchg_[1-4] are okay and much
> - * faster than an xchg with forced lock semantics.
> - */
> -#define __this_cpu_xchg_8(pcp, nval) percpu_xchg_op(pcp, nval)
> -#define __this_cpu_cmpxchg_8(pcp, oval, nval) percpu_cmpxchg_op(pcp, oval, nval)
> +#define __this_cpu_xchg_1(pcp, val) percpu_xchg_op(pcp, val)
> +#define __this_cpu_xchg_2(pcp, val) percpu_xchg_op(pcp, val)
> +#define __this_cpu_xchg_4(pcp, val) percpu_xchg_op(pcp, val)
>
> #define this_cpu_read_1(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
> #define this_cpu_read_2(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
> @@ -471,6 +468,7 @@ do { \
> #define __this_cpu_cmpxchg_double_4(pcp1, pcp2, o1, o2, n1, n2) percpu_cmpxchg8b_double(pcp1, o1, o2, n1, n2)
> #define this_cpu_cmpxchg_double_4(pcp1, pcp2, o1, o2, n1, n2) percpu_cmpxchg8b_double(pcp1, o1, o2, n1, n2)
> #define irqsafe_cpu_cmpxchg_double_4(pcp1, pcp2, o1, o2, n1, n2) percpu_cmpxchg8b_double(pcp1, o1, o2, n1, n2)
> +
> #endif /* CONFIG_X86_CMPXCHG64 */
>
> /*
> @@ -485,6 +483,8 @@ do { \
> #define __this_cpu_or_8(pcp, val) percpu_to_op("or", (pcp), val)
> #define __this_cpu_xor_8(pcp, val) percpu_to_op("xor", (pcp), val)
> #define __this_cpu_add_return_8(pcp, val) percpu_add_return_op(pcp, val)
> +#define __this_cpu_xchg_8(pcp, nval) percpu_xchg_op(pcp, nval)
> +#define __this_cpu_cmpxchg_8(pcp, oval, nval) percpu_cmpxchg_op(pcp, oval, nval)
>
> #define this_cpu_read_8(pcp) percpu_from_op("mov", (pcp), "m"(pcp))
> #define this_cpu_write_8(pcp, val) percpu_to_op("mov", (pcp), val)
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/