svn commit: r326765 - head/contrib/ofed/include
Konstantin Belousov
kib at FreeBSD.org
Mon Dec 11 11:59:47 UTC 2017
Author: kib
Date: Mon Dec 11 11:59:45 2017
New Revision: 326765
URL: https://svnweb.freebsd.org/changeset/base/326765
Log:
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
Modified:
head/contrib/ofed/include/udma_barrier.h
Modified: head/contrib/ofed/include/udma_barrier.h
==============================================================================
--- head/contrib/ofed/include/udma_barrier.h Mon Dec 11 11:57:46 2017 (r326764)
+++ head/contrib/ofed/include/udma_barrier.h Mon Dec 11 11:59:45 2017 (r326765)
@@ -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
More information about the svn-src-all
mailing list