From 6fba5bbfebed9d0136f3d4b862288dd2a9664180 Mon Sep 17 00:00:00 2001 From: David Abdurachmanov Date: Tue, 2 Apr 2019 11:42:03 +0200 Subject: [PATCH] Add barrier definitions for RISC-V Signed-off-by: David Abdurachmanov --- rdma-core-20.1-riscv-barriers.patch | 31 +++++++++++++++++++++++++++++ rdma-core.spec | 3 +++ 2 files changed, 34 insertions(+) create mode 100644 rdma-core-20.1-riscv-barriers.patch diff --git a/rdma-core-20.1-riscv-barriers.patch b/rdma-core-20.1-riscv-barriers.patch new file mode 100644 index 0000000..0a07e08 --- /dev/null +++ b/rdma-core-20.1-riscv-barriers.patch @@ -0,0 +1,31 @@ +diff --git a/util/udma_barrier.h b/util/udma_barrier.h +index 23acf23..899acf5 100644 +--- a/util/udma_barrier.h ++++ b/util/udma_barrier.h +@@ -96,6 +96,8 @@ + #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(__riscv) ++#define udma_to_device_barrier() asm volatile("fence w,w" ::: "memory"); + #else + #error No architecture specific memory barrier defines found! + #endif +@@ -128,6 +130,8 @@ + #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(__riscv) ++#define udma_from_device_barrier() asm volatile("fence r,rw" ::: "memory"); + #else + #error No architecture specific memory barrier defines found! + #endif +@@ -192,6 +196,8 @@ + #define mmio_flush_writes() asm volatile("dsb st" ::: "memory"); + #elif defined(__sparc__) || defined(__s390x__) + #define mmio_flush_writes() asm volatile("" ::: "memory") ++#elif defined(__riscv) ++#define mmio_flush_writes() asm volatile("fence w,w" ::: "memory"); + #else + #error No architecture specific memory barrier defines found! + #endif diff --git a/rdma-core.spec b/rdma-core.spec index d42197b..4419b3d 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -15,6 +15,8 @@ License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core Source: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{name}-%{version}.tar.gz +Patch0: rdma-core-20.1-riscv-barriers.patch + BuildRequires: binutils BuildRequires: cmake >= 2.8.11 BuildRequires: gcc @@ -239,6 +241,7 @@ discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand. %prep %setup +%patch0 -p1 -b .riscv %build