[RFC] [PATCH] powerpc: Fix missing barriers in atomic_exchange_and_add_{acq,rel}

Adhemerval Zanella azanella@linux.vnet.ibm.com
Tue Nov 25 15:07:00 GMT 2014


Hi Torvald,

On 21-10-2014 17:54, Torvald Riegel wrote:
> 				      \
>    })
> +#define atomic_exchange_and_add_acq(mem, value) \
> +  ({									      \
> +    __typeof (*(mem)) __result2;					      \
> +    __result2 = atomic_exchange_and_add (mem, value);			      \
> +    atomic_read_barrier ();						      \
> +    __result2;		

Although it is not wrong by using a 'atomic_read_barrier' (lwsync), it adds a more 
expensive synchronization than required (isync).  I would prefer if we use the
already defined __arch_compare_and_exchange_val_[32|64]_[acq|rel] operations on powerpc.

> 						      \
> +  })
> +#define atomic_exchange_and_add_rel(mem, value) \
> +  ({									      \
> +    atomic_write_barrier ();						      \
> +    atomic_exchange_and_add (mem, value);				      \
> +  })
>
>  #define atomic_increment_val(mem) \
>    ({									      \



More information about the Libc-alpha mailing list