From: Jason Gunthorpe <jgunthorpe@xxxxxxxxxxxxxxxxxxxx> For x86 the serialization within the spin lock is enough to strongly order WC and other memory types. Add a new barrier named 'mmio_wc_spinlock' to optimize that. Signed-off-by: Jason Gunthorpe <jgunthorpe@xxxxxxxxxxxxxxxxxxxx> Reviewed-by: Yishai Hadas <yishaih@xxxxxxxxxxxx> --- util/udma_barrier.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/util/udma_barrier.h b/util/udma_barrier.h index 9e73148..ec14dd3 100644 --- a/util/udma_barrier.h +++ b/util/udma_barrier.h @@ -33,6 +33,8 @@ #ifndef __UTIL_UDMA_BARRIER_H #define __UTIL_UDMA_BARRIER_H +#include <pthread.h> + /* Barriers for DMA. These barriers are expliclty only for use with user DMA operations. If you @@ -222,4 +224,17 @@ */ #define mmio_ordered_writes_hack() mmio_flush_writes() +/* Higher Level primitives */ + +/* Do mmio_wc_start and grab a spinlock */ +static inline void mmio_wc_spinlock(pthread_spinlock_t *lock) +{ + pthread_spin_lock(lock); +#if !defined(__i386__) && !defined(__x86_64__) + /* For x86 the serialization within the spin lock is enough to + * strongly order WC and other memory types. */ + mmio_wc_start(); +#endif +} + #endif -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html