aboutsummaryrefslogtreecommitdiff
path: root/contrib/ofed
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2017-12-11 11:59:45 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2017-12-11 11:59:45 +0000
commitb258727e794ba80ee28ea85c0dc0bb26c6e1315a (patch)
treefaa4429c61ac8c99645e622d1c95d3c1f7061526 /contrib/ofed
parent0521e6e192fb91917a5aa1074ccd175a90b85d48 (diff)
downloadsrc-b258727e794ba80ee28ea85c0dc0bb26c6e1315a.tar.gz
src-b258727e794ba80ee28ea85c0dc0bb26c6e1315a.zip
ofed: Define barriers for mips and arm.
I used the strongest barriers available on the architectures, so if the future analysis show that it is excessive, the barriers could be relaxed. Still, it is unlikely that it is meaningful to run IB on 32bit ARM or current MIPS machines, so the change is to make WITH_OFED to pass tinderbox. Sponsored by: Mellanox Technologies Reviewed by: hselasky Differential revision: https://reviews.freebsd.org/D13329
Notes
Notes: svn path=/head/; revision=326765
Diffstat (limited to 'contrib/ofed')
-rw-r--r--contrib/ofed/include/udma_barrier.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/contrib/ofed/include/udma_barrier.h b/contrib/ofed/include/udma_barrier.h
index 23acf233d763..71d264f8dce2 100644
--- a/contrib/ofed/include/udma_barrier.h
+++ b/contrib/ofed/include/udma_barrier.h
@@ -96,6 +96,14 @@
#define udma_to_device_barrier() asm volatile("dsb st" ::: "memory");
#elif defined(__sparc__) || defined(__s390x__)
#define udma_to_device_barrier() asm volatile("" ::: "memory")
+#elif defined(__mips__)
+#include <sys/types.h>
+#include <machine/atomic.h>
+#define udma_to_device_barrier() mips_sync()
+#elif defined(__arm__)
+#include <sys/types.h>
+#include <machine/atomic.h>
+#define udma_to_device_barrier() dmb()
#else
#error No architecture specific memory barrier defines found!
#endif
@@ -128,6 +136,10 @@
#define udma_from_device_barrier() asm volatile("dsb ld" ::: "memory");
#elif defined(__sparc__) || defined(__s390x__)
#define udma_from_device_barrier() asm volatile("" ::: "memory")
+#elif defined(__mips__)
+#define udma_from_device_barrier() mips_sync()
+#elif defined(__arm__)
+#define udma_from_device_barrier() dmb()
#else
#error No architecture specific memory barrier defines found!
#endif
@@ -192,6 +204,10 @@
#define mmio_flush_writes() asm volatile("dsb st" ::: "memory");
#elif defined(__sparc__) || defined(__s390x__)
#define mmio_flush_writes() asm volatile("" ::: "memory")
+#elif defined(__mips__)
+#define mmio_flush_writes() mips_sync()
+#elif defined(__arm__)
+#define mmio_flush_writes() dmb()
#else
#error No architecture specific memory barrier defines found!
#endif