linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Devesh Sharma
	<Devesh.sharma-laKkSmNT4hbQT0dZR+AlfA@public.gmane.org>,
	Hal Rosenstock
	<hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>,
	Mike Marciniszyn
	<mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Moni Shoua <monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Steve Wise
	<swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>,
	Tatyana Nikolova
	<Tatyana.E.Nikolova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Vladimir Sokolovsky
	<vlad-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: [RFCv2 08/15] Unified CMake build system
Date: Mon, 22 Aug 2016 12:13:31 -0600	[thread overview]
Message-ID: <1471889618-1605-9-git-send-email-jgunthorpe@obsidianresearch.com> (raw)
In-Reply-To: <1471889618-1605-1-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>

This replaces the random selection of auto* and custom stuff with a
simple unified cmake based scheme.

The input from cpp to gcc is validated to be identical.

An analysis of the post-install result shows the following differences:
 - cmake makes shlib symlinks libX.so -> libX.so.1 -> libX.so.1.0.0, while
   libtool does libX.so -> libX.so.1.0.0
 - librspreload's non-link name is lib/rsocket/librspreload.so (not .so.1)
   This correctly reflects the fact it is a soname-less LD_PRELOAD library.
   Symlinks are maintained for the other two incorrect names.
 - No static version of librspreload is produced. This library is only
   useful for LD_PRELOAD and cannot be statically linked to.
 - The provider shared library plugins and the LD_PRELOAD library
   have no SONAME. This is standard for plugin libraries.
 - The plugin shared libraries are not marked executable
 - -std=gnu99 is turned on globally
 - All shlibs have correct shared library dependencies (--as-needed and
   --no-undefined are turned on).
   Several binaries drop their pthreads dependency as they don't use it.
 - NDEBUG is controlled globally and is not defined.
   Previously only libcxgb4 defined it
 - libtool *.la files are produced by cmake since libtool is not used
   and have a few minor differences:
   - Providers do not list the 'libX.so' bogus name, the .so is called
     libX-rdmav2.so
   - version information (current/age/revision) is bogus
   - The .la files are not marked executable

Signed-off-by: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
---
 CMakeLists.txt                              | 232 ++++++++++++++++++++++++++
 README.md                                   |  69 ++++++++
 buildlib/FindLDSymVer.cmake                 |  41 +++++
 buildlib/RDMA_BuildType.cmake               |  31 ++++
 buildlib/RDMA_DoFixup.cmake                 |  21 +++
 buildlib/RDMA_EnableCStd.cmake              |  23 +++
 buildlib/config.h.in                        |  29 ++++
 buildlib/fixup-include/rdma-rdma_user_rxe.h | 144 +++++++++++++++++
 buildlib/fixup-include/valgrind-memcheck.h  |   5 +
 buildlib/provider.map                       |   6 +
 buildlib/publish_headers.cmake              |  20 +++
 buildlib/rdma_functions.cmake               | 242 ++++++++++++++++++++++++++++
 libcxgb3/src/CMakeLists.txt                 |   6 +
 libcxgb4/src/CMakeLists.txt                 |   6 +
 libhfi1verbs/src/CMakeLists.txt             |   4 +
 libi40iw/src/CMakeLists.txt                 |   5 +
 libibcm/examples/CMakeLists.txt             |   2 +
 libibcm/src/CMakeLists.txt                  |   9 ++
 libibumad/man/CMakeLists.txt                |  42 +++++
 libibumad/src/CMakeLists.txt                |  14 ++
 libibumad/tests/CMakeLists.txt              |   5 +
 libibverbs/examples/CMakeLists.txt          |  29 ++++
 libibverbs/man/CMakeLists.txt               |  78 +++++++++
 libibverbs/src/CMakeLists.txt               |  34 ++++
 libipathverbs/CMakeLists.txt                |   4 +
 libipathverbs/src/CMakeLists.txt            |   4 +
 libmlx4/src/CMakeLists.txt                  |   9 ++
 libmlx5/src/CMakeLists.txt                  |   9 ++
 libmthca/src/CMakeLists.txt                 |  10 ++
 libnes/src/CMakeLists.txt                   |   4 +
 libocrdma/src/CMakeLists.txt                |   4 +
 librdmacm/examples/CMakeLists.txt           |  43 +++++
 librdmacm/man/CMakeLists.txt                |  65 ++++++++
 librdmacm/src/CMakeLists.txt                |  39 +++++
 librxe/CMakeLists.txt                       |   4 +
 librxe/man/CMakeLists.txt                   |   4 +
 librxe/src/CMakeLists.txt                   |   3 +
 37 files changed, 1299 insertions(+)
 create mode 100644 CMakeLists.txt
 create mode 100644 README.md
 create mode 100644 buildlib/FindLDSymVer.cmake
 create mode 100644 buildlib/RDMA_BuildType.cmake
 create mode 100644 buildlib/RDMA_DoFixup.cmake
 create mode 100644 buildlib/RDMA_EnableCStd.cmake
 create mode 100644 buildlib/config.h.in
 create mode 100644 buildlib/fixup-include/rdma-rdma_user_rxe.h
 create mode 100644 buildlib/fixup-include/valgrind-memcheck.h
 create mode 100644 buildlib/provider.map
 create mode 100644 buildlib/publish_headers.cmake
 create mode 100644 buildlib/rdma_functions.cmake
 create mode 100644 libcxgb3/src/CMakeLists.txt
 create mode 100644 libcxgb4/src/CMakeLists.txt
 create mode 100644 libhfi1verbs/src/CMakeLists.txt
 create mode 100644 libi40iw/src/CMakeLists.txt
 create mode 100644 libibcm/examples/CMakeLists.txt
 create mode 100644 libibcm/src/CMakeLists.txt
 create mode 100644 libibumad/man/CMakeLists.txt
 create mode 100644 libibumad/src/CMakeLists.txt
 create mode 100644 libibumad/tests/CMakeLists.txt
 create mode 100644 libibverbs/examples/CMakeLists.txt
 create mode 100644 libibverbs/man/CMakeLists.txt
 create mode 100644 libibverbs/src/CMakeLists.txt
 create mode 100644 libipathverbs/CMakeLists.txt
 create mode 100644 libipathverbs/src/CMakeLists.txt
 create mode 100644 libmlx4/src/CMakeLists.txt
 create mode 100644 libmlx5/src/CMakeLists.txt
 create mode 100644 libmthca/src/CMakeLists.txt
 create mode 100644 libnes/src/CMakeLists.txt
 create mode 100644 libocrdma/src/CMakeLists.txt
 create mode 100644 librdmacm/examples/CMakeLists.txt
 create mode 100644 librdmacm/man/CMakeLists.txt
 create mode 100644 librdmacm/src/CMakeLists.txt
 create mode 100644 librxe/CMakeLists.txt
 create mode 100644 librxe/man/CMakeLists.txt
 create mode 100644 librxe/src/CMakeLists.txt

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 000000000000..568e819aa976
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,232 @@
+# COPYRIGHT (c) 2016 Obsidian Research Corporation. See COPYING file
+# Run cmake as:
+#  mkdir build
+#  cmake -GNinja ..
+#  ninja
+#
+# Common options passed to cmake are:
+#  -DCMAKE_EXPORT_COMPILE_COMMANDS=1
+#      Write a compile_commands.json file for clang tooling
+#  -DCMAKE_BUILD_TYPE=RelWithDebInfo
+#      Change the optimization level, Debug disables optimization
+#  -DENABLE_VALGRIND=1 (default disabled)
+#      Embed valgrind notations, this has a tiny negative performance impact
+#  -DENABLE_RESOLVE_NEIGH=0 (default enabled)
+#      Do not link to libnl and do not resolve neighbours internally for Ethernet.
+
+cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
+project(RDMA C)
+
+set(PACKAGE_NAME "RDMA")
+# FIXME versioning strategy?
+set(PACKAGE_VERSION "1")
+
+#-------------------------
+# Basic standard paths
+# C include root
+set(BUILD_INCLUDE ${CMAKE_BINARY_DIR}/include)
+# Executables
+set(BUILD_BIN ${CMAKE_BINARY_DIR}/bin)
+# Libraries
+set(BUILD_LIB ${CMAKE_BINARY_DIR}/lib)
+
+set(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc")
+# Location to place provider .driver files
+set(CONFIG_DIR "${SYSCONFDIR}/libibverbs.d")
+
+#-------------------------
+# Load CMake components
+set(BUILDLIB "${CMAKE_SOURCE_DIR}/buildlib")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${BUILDLIB}")
+
+include(FindPkgConfig)
+include(CheckCCompilerFlag)
+include(CheckIncludeFile)
+include(RDMA_EnableCStd)
+include(RDMA_BuildType)
+include(RDMA_DoFixup)
+include(publish_headers)
+include(rdma_functions)
+
+#-------------------------
+# Setup the basic C compiler
+RDMA_BuildType()
+include_directories(${BUILD_INCLUDE})
+# FIXME: Eliminate HAVE_CONFIG_H, we always have it.
+add_definitions(-DHAVE_CONFIG_H)
+add_definitions(-DIBV_CONFIG_DIR="${CONFIG_DIR}")
+
+# Require GNU99 mode
+RDMA_EnableCStd()
+
+# The code does not do the racy fcntl if the various CLOEXEC's are not
+# supported so it really doesn't work right if this isn't available. Thus hard
+# require it.
+CHECK_C_SOURCE_COMPILES("
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/socket.h>
+ #include <fcntl.h>
+ int main(int argc,const char *argv[]) {
+    open(\".\",O_RDONLY | O_CLOEXEC);
+    socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);
+    return 0;
+ }" HAS_CLOEXEC)
+if (NOT HAS_CLOEXEC)
+  message(FATAL_ERROR "O_CLOEXEC/SOCK_CLOEXEC/fopen(..,\"e\") support is required but not found")
+endif()
+
+# always_inline is supported
+CHECK_C_SOURCE_COMPILES("
+ inline __attribute__((always_inline)) int foo(void) {return 0;}
+ int main(int argc,const char *argv[]) { return foo(); }"
+  HAVE_FUNC_ATTRIBUTE_ALWAYS_INLINE
+  FAIL_REGEX "warning")
+
+# Enable development support features
+# Prune unneeded shared libraries during linking
+RDMA_AddOptCFlag(CMAKE_EXE_LINKER_FLAGS SUPPORTS_AS_NEEDED "-Wl,--as-needed")
+RDMA_AddOptCFlag(CMAKE_SHARED_LINKER_FLAGS SUPPORTS_AS_NEEDED "-Wl,--as-needed")
+
+# Ensure all shared ELFs have fully described linking
+RDMA_AddOptCFlag(CMAKE_EXEC_LINKER_FLAGS SUPPORTS_NO_UNDEFINED "-Wl,--no-undefined")
+RDMA_AddOptCFlag(CMAKE_SHARED_LINKER_FLAGS SUPPORTS_NO_UNDEFINED "-Wl,--no-undefined")
+
+# Enable gold linker - gold has different linking checks
+#RDMA_AddOptCFlag(CMAKE_EXEC_LINKER_FLAGS SUPPORTS_NO_UNDEFINED "-fuse-ld=gold")
+#RDMA_AddOptCFlag(CMAKE_SHARED_LINKER_FLAGS SUPPORTS_NO_UNDEFINED "-fuse-ld=gold")
+
+# Verify that GNU --version-script and asm(".symver") works
+find_package(LDSymVer REQUIRED)
+
+#-------------------------
+# Find libraries
+# pthread
+FIND_PACKAGE (Threads REQUIRED)
+
+# libnl
+if ((NOT DEFINED ENABLE_RESOLVE_NEIGH) OR (ENABLE_RESOLVE_NEIGH))
+  # FIXME use of pkgconfig is discouraged
+  pkg_check_modules(NL3 libnl-3.0 libnl-route-3.0)
+  if (NOT NL3_FOUND)
+    # FIXME: I don't know why we have this fallback, all supported distros
+    # have libnl3
+    pkg_check_modules(NL1 libnl-1)
+    if (NOT NL1_FOUND)
+      message(FATAL_ERROR "Cannot find libnl-3.0 or libnl-1")
+    endif()
+    set(NL_KIND 1)
+    set(NL_INCLUDE_DIRS ${NL1_INCLUDE_DIRS})
+    set(NL_LIBRARIES ${NL1_LIBRARIES})
+  else()
+    set(NL_KIND 3)
+    set(NL_INCLUDE_DIRS ${NL3_INCLUDE_DIRS})
+    set(NL_LIBRARIES ${NL3_LIBRARIES})
+  endif()
+
+  include_directories(${NL_INCLUDE_DIRS})
+else()
+  set(NL_KIND 0)
+  set(NL_LIBRARIES "")
+endif()
+
+# Statically determine sizeof(long), this is largely unnecessary, no new code
+# should rely on this.
+CHECK_C_SOURCE_COMPILES("
+ char dummy[sizeof(long) == 8?1:-1];
+ int main(int argc,const char *argv[]) { return 0; }"
+  SIZEOF_LONG_8)
+if (NOT SIZEOF_LONG_8)
+  CHECK_C_SOURCE_COMPILES("
+   char dummy[sizeof(long) == 4?1:-1];
+   int main(int argc,const char *argv[]) { return 0; }"
+    SIZEOF_LONG_4)
+endif()
+if (SIZEOF_LONG_8)
+  set(SIZEOF_LONG 8)
+elseif(SIZEOF_LONG_4)
+  set(SIZEOF_LONG 4)
+else()
+  message(FATAL_ERROR "Could not determine sizeof(long)")
+endif()
+
+# Are our kernel headers new enough?
+# If not replace them with built-in copies so we can continue to build.
+CHECK_INCLUDE_FILE("rdma/rdma_user_rxe.h" HAVE_RDMA_USER_RXE)
+RDMA_DoFixup("${HAVE_RDMA_USER_RXE}" "rdma/rdma_user_rxe.h")
+
+#-------------------------
+# Apply fixups
+
+# FIXME: We should probably always enable memcheck.h, and only selectively
+# turn it off in the real high performance paths. There is no reason umad
+# should ever have memcheck disabled for instance.
+if (ENABLE_VALGRIND)
+  CHECK_INCLUDE_FILE("valgrind/memcheck.h" ENABLE_VALGRIND)
+endif()
+RDMA_DoFixup("${ENABLE_VALGRIND}" "valgrind/memcheck.h")
+
+#-------------------------
+# Build Prep
+# Write out a git ignore file to the build directory if it isn't the source
+# directory. For developer convenience
+if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+  file(WRITE ${CMAKE_BINARY_DIR}/.gitignore "*")
+endif()
+
+configure_file(${BUILDLIB}/config.h.in ${BUILD_INCLUDE}/config.h)
+
+#-------------------------
+# Sub-directories
+# Libraries
+add_subdirectory(libibumad/src)
+add_subdirectory(libibumad/man)
+add_subdirectory(libibverbs/src)
+add_subdirectory(libibverbs/man)
+add_subdirectory(librdmacm/src)
+add_subdirectory(librdmacm/man)
+add_subdirectory(libibcm/src)
+
+# Providers
+add_subdirectory(libcxgb3/src)
+add_subdirectory(libcxgb4/src)
+add_subdirectory(libhfi1verbs/src)
+add_subdirectory(libi40iw/src)
+add_subdirectory(libipathverbs/src)
+add_subdirectory(libipathverbs/)
+add_subdirectory(libmlx4/src)
+add_subdirectory(libmlx5/src)
+add_subdirectory(libmthca/src)
+add_subdirectory(libnes/src)
+add_subdirectory(libocrdma/src)
+add_subdirectory(librxe/src)
+add_subdirectory(librxe/man)
+add_subdirectory(librxe/)
+
+# Binaries
+add_subdirectory(libibcm/examples)
+add_subdirectory(libibumad/tests)
+add_subdirectory(libibverbs/examples)
+add_subdirectory(librdmacm/examples)
+
+rdma_finalize_libs()
+
+#-------------------------
+# Display a summary
+# Only report things that are non-ideal
+message(STATUS "Missing Optional Items:")
+if (NOT HAVE_FUNC_ATTRIBUTE_ALWAYS_INLINE)
+  message(STATUS " Compiler attribute always_inline NOT supported")
+endif()
+if (NOT ENABLE_VALGRIND)
+  message(STATUS " Valgrind memcheck.h NOT enabled")
+endif()
+if (NL_KIND EQUAL 1)
+  message(STATUS " libnl 3 NOT found (using libnl 1 compat)")
+endif()
+if (NL_KIND EQUAL 0)
+  message(STATUS " neighbour resolution NOT enabled")
+endif()
+if (NOT HAVE_RDMA_USER_RXE)
+  message(STATUS " rdma/rdma_user_rxe.h NOT found (old system kernel headers)")
+endif()
diff --git a/README.md b/README.md
new file mode 100644
index 000000000000..b3e9b20f7987
--- /dev/null
+++ b/README.md
@@ -0,0 +1,69 @@
+# RDMA Plumbing
+
+This is the userspace components for the Linux Kernel's drivers/infiniband
+subsystem. Specifically this contains the userspace libraries for the
+following device nodes:
+
+ - /dev/infiniband/uverbsX (libibverbs)
+ - /dev/infiniband/rdma_cm (librdmacm)
+ - /dev/infiniband/umadX (libumad)
+ - /dev/infiniband/ucmX (libibcm, deprecated)
+
+Further, the userspace component of the RDMA kernel drivers are included under
+the providers/ directory. Support for the following Kernel RDMA drivers is
+included:
+
+ - iw_cxgb3.ko
+ - iw_cxgb4.ko
+ - hfi1.ko
+ - i40iw.ko
+ - ib_qib.ko
+ - mlx4_ib.ko
+ - mlx5_ib.ko
+ - ib_mthca.ko
+ - iw_nes.ko
+ - ocrdma.ko
+ - rdma_rxe.ko
+
+# Building
+
+This project uses a cmake based build system. Quick start:
+
+```sh
+$ mkdir build
+$ cd build
+$ cmake -GNinja ..
+$ ninja
+```
+
+*build/bin* will contain the sample programs and *build/lib* will contain the
+shared libraries.
+
+NOTE: Fedora Core uses the name 'ninja-build' for the ninja command.
+
+NOTE: It is not currently easy to run from the build directory, the plugins
+only load from the system path.
+
+# Building on CentOS 6/7
+
+For end users, the package can be built using GNU Make and the old cmake
+included with the distro:
+
+```sh
+$ mkdir build
+$ cd build
+$ cmake  ..
+$ make
+```
+
+Developers are suggested to install more modern tooling for the best experience.
+
+```sh
+$ yum install epel-release
+$ yum install cmake3 unzip
+$ curl -OL https://github.com/ninja-build/ninja/releases/download/v1.7.1/ninja-linux.zip
+$ unzip ninja-linux.zip
+$ install -m755 ninja /usr/local/bin/ninja
+```
+
+Use the 'cmake3' program in place of `cmake` in the above instructions.
\ No newline at end of file
diff --git a/buildlib/FindLDSymVer.cmake b/buildlib/FindLDSymVer.cmake
new file mode 100644
index 000000000000..df86bb3aa31a
--- /dev/null
+++ b/buildlib/FindLDSymVer.cmake
@@ -0,0 +1,41 @@
+# COPYRIGHT (c) 2016 Obsidian Research Corporation. See COPYING file
+# find_package helper to detect symbol version support in the compiler and
+# linker. If supported then LDSYMVER_MODE will be set to GNU
+
+# Basic sample GNU style map file
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test.map" "
+IBVERBS_1.0 {
+        global:
+                ibv_get_device_list;
+        local: *;
+};
+
+IBVERBS_1.1 {
+        global:
+                ibv_get_device_list;
+} IBVERBS_1.0;
+")
+
+set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
+set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/test.map")
+
+# And matching source, this also checks that .symver asm works
+check_c_source_compiles("
+void ibv_get_device_list_1(void){}
+asm(\".symver ibv_get_device_list_1, ibv_get_device_list @ IBVERBS_1.1\");
+void ibv_get_device_list_0(void){}
+asm(\".symver ibv_get_device_list_0, ibv_get_device_list @@ IBVERBS_1.0\");
+
+int main(void){return 0;}" _LDSYMVER_SUCCESS)
+file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/test.map")
+set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
+
+if (_LDSYMVER_SUCCESS)
+  set(LDSYMVER_MODE "GNU" CACHE STRING "How to set symbol versions on shared libraries")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+  LDSymVer
+  REQUIRED_VARS LDSYMVER_MODE
+  )
diff --git a/buildlib/RDMA_BuildType.cmake b/buildlib/RDMA_BuildType.cmake
new file mode 100644
index 000000000000..f5dab4397709
--- /dev/null
+++ b/buildlib/RDMA_BuildType.cmake
@@ -0,0 +1,31 @@
+# COPYRIGHT (c) 2015 Obsidian Research Corporation. See COPYING file
+
+# Set the default build type to RelWithDebInfo. Since RDMA is typically used
+# in performance contexts it doesn't make much sense to have the default build
+# turn off the optimizer.
+function(RDMA_BuildType)
+  set(build_types Debug Release RelWithDebInfo MinSizeRel)
+
+  if(NOT CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE String
+      "Options are ${build_types}"
+      FORCE
+      )
+    set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${build_types})
+  endif()
+
+  # Remove NDEBUG from all the default cmake configs, this disables assert,
+  # which we don't want to ever do.
+  foreach (build_config ${build_types})
+    string(TOUPPER ${build_config} upper_case_build_config)
+    foreach (language CXX C)
+      set(VAR_TO_MODIFY "CMAKE_${language}_FLAGS_${upper_case_build_config}")
+      string(REGEX REPLACE "(^| )[/-]D *NDEBUG($| )"
+	" "
+	replacement
+	"${${VAR_TO_MODIFY}}"
+	)
+      set(${VAR_TO_MODIFY} "${replacement}" CACHE STRING "Default flags for ${build_config} configuration" FORCE)
+    endforeach()
+  endforeach()
+endfunction()
diff --git a/buildlib/RDMA_DoFixup.cmake b/buildlib/RDMA_DoFixup.cmake
new file mode 100644
index 000000000000..1e30cf6c761b
--- /dev/null
+++ b/buildlib/RDMA_DoFixup.cmake
@@ -0,0 +1,21 @@
+# COPYRIGHT (c) 2016 Obsidian Research Corporation. See COPYING file
+
+# Execute a header fixup based on NOT_NEEDED for HEADER
+
+# The buildlib includes alternate header file shims for several scenarios, if
+# the build system detects a feature is present then it should call OrcDoFixup
+# with the test as true. If false then the shim header will be installed.
+
+# Typically the shim header will replace a missing header with stubs, or it
+# will augment an existing header with include_next.
+function(RDMA_DoFixup not_needed header)
+  set(DEST "${BUILD_INCLUDE}/${header}")
+  if (NOT "${not_needed}")
+    get_filename_component(DIR ${DEST} DIRECTORY)
+    file(MAKE_DIRECTORY "${DIR}")
+    string(REPLACE / - header-bl ${header})
+    execute_process(COMMAND "ln" "-Tsf" "${BUILDLIB}/fixup-include/${header-bl}" "${DEST}")
+  else()
+    file(REMOVE ${DEST})
+  endif()
+endfunction()
diff --git a/buildlib/RDMA_EnableCStd.cmake b/buildlib/RDMA_EnableCStd.cmake
new file mode 100644
index 000000000000..9cbbb881cd19
--- /dev/null
+++ b/buildlib/RDMA_EnableCStd.cmake
@@ -0,0 +1,23 @@
+# COPYRIGHT (c) 2016 Obsidian Research Corporation. See COPYING file
+
+# Test if the CC compiler supports the flag and if so add it to TO_VAR
+function(RDMA_AddOptCFlag TO_VAR CACHE_VAR FLAG)
+  CHECK_C_COMPILER_FLAG("${FLAG}" ${CACHE_VAR})
+  if (${CACHE_VAR})
+    SET(${TO_VAR} "${${TO_VAR}} ${FLAG}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+# Enable the minimum required gnu99 standard in the compiler.
+function(RDMA_EnableCStd)
+  if (CMAKE_VERSION VERSION_LESS "3.1")
+    # Check for support of the usual flag
+    CHECK_C_COMPILER_FLAG("-std=gnu99" SUPPORTS_GNU99)
+    if (SUPPORTS_GNU99)
+      SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99" PARENT_SCOPE)
+    endif()
+  else()
+    # Newer cmake can do this internally
+    set(CMAKE_C_STANDARD 99 PARENT_SCOPE)
+  endif()
+endfunction()
diff --git a/buildlib/config.h.in b/buildlib/config.h.in
new file mode 100644
index 000000000000..1e487fc6aa6b
--- /dev/null
+++ b/buildlib/config.h.in
@@ -0,0 +1,29 @@
+// FIXME: Remove this, ibverbs is included so we don't need to detect
+#define HAVE_IBV_DOFORK_RANGE 1
+#define HAVE_IBV_DONTFORK_RANGE 1
+#define HAVE_IBV_REGISTER_DRIVER 1
+#define HAVE_IBV_READ_SYSFS_FILE 1
+
+// FIXME: Remove this, The cmake version hard-requires symbol version support
+#define HAVE_SYMVER_SUPPORT 1
+
+// FIXME: Remove this, The cmake version hard-requires new style CLOEXEC support
+#define STREAM_CLOEXEC "e"
+
+// FIXME: Remove this, cmake always provides a valgrind/memcheck.h
+#define HAVE_VALGRIND_MEMCHECK_H 1
+
+#define SYSCONFDIR "@SYSCONFDIR@"
+
+// FIXME This has been supported in compilers forever, we should just fail to build on such old systems.
+#cmakedefine HAVE_FUNC_ATTRIBUTE_ALWAYS_INLINE 1
+
+#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
+
+#if @NL_KIND@ == 3
+# define HAVE_LIBNL3 1
+#elif @NL_KIND@ == 1
+# define HAVE_LIBNL1 1
+#elif @NL_KIND@ == 0
+# define NRESOLVE_NEIGH 1
+#endif
diff --git a/buildlib/fixup-include/rdma-rdma_user_rxe.h b/buildlib/fixup-include/rdma-rdma_user_rxe.h
new file mode 100644
index 000000000000..1de99cfdaf7d
--- /dev/null
+++ b/buildlib/fixup-include/rdma-rdma_user_rxe.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *	- Redistributions of source code must retain the above
+ *	  copyright notice, this list of conditions and the following
+ *	  disclaimer.
+ *
+ *	- Redistributions in binary form must reproduce the above
+ *	  copyright notice, this list of conditions and the following
+ *	  disclaimer in the documentation and/or other materials
+ *	  provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef RDMA_USER_RXE_H
+#define RDMA_USER_RXE_H
+
+#include <linux/types.h>
+
+union rxe_gid {
+	__u8	raw[16];
+	struct {
+		__be64	subnet_prefix;
+		__be64	interface_id;
+	} global;
+};
+
+struct rxe_global_route {
+	union rxe_gid	dgid;
+	__u32		flow_label;
+	__u8		sgid_index;
+	__u8		hop_limit;
+	__u8		traffic_class;
+};
+
+struct rxe_av {
+	__u8			port_num;
+	__u8			network_type;
+	struct rxe_global_route	grh;
+	union {
+		struct sockaddr		_sockaddr;
+		struct sockaddr_in	_sockaddr_in;
+		struct sockaddr_in6	_sockaddr_in6;
+	} sgid_addr, dgid_addr;
+};
+
+struct rxe_send_wr {
+	__u64			wr_id;
+	__u32			num_sge;
+	__u32			opcode;
+	__u32			send_flags;
+	union {
+		__be32		imm_data;
+		__u32		invalidate_rkey;
+	} ex;
+	union {
+		struct {
+			__u64	remote_addr;
+			__u32	rkey;
+		} rdma;
+		struct {
+			__u64	remote_addr;
+			__u64	compare_add;
+			__u64	swap;
+			__u32	rkey;
+		} atomic;
+		struct {
+			__u32	remote_qpn;
+			__u32	remote_qkey;
+			__u16	pkey_index;
+		} ud;
+		struct {
+			struct ib_mr *mr;
+			__u32        key;
+			int          access;
+		} reg;
+	} wr;
+};
+
+struct rxe_sge {
+	__u64	addr;
+	__u32	length;
+	__u32	lkey;
+};
+
+struct mminfo {
+	__u64			offset;
+	__u32			size;
+	__u32			pad;
+};
+
+struct rxe_dma_info {
+	__u32			length;
+	__u32			resid;
+	__u32			cur_sge;
+	__u32			num_sge;
+	__u32			sge_offset;
+	union {
+		__u8		inline_data[0];
+		struct rxe_sge	sge[0];
+	};
+};
+
+struct rxe_send_wqe {
+	struct rxe_send_wr	wr;
+	struct rxe_av		av;
+	__u32			status;
+	__u32			state;
+	__u64			iova;
+	__u32			mask;
+	__u32			first_psn;
+	__u32			last_psn;
+	__u32			ack_length;
+	__u32			ssn;
+	__u32			has_rd_atomic;
+	struct rxe_dma_info	dma;
+};
+
+struct rxe_recv_wqe {
+	__u64			wr_id;
+	__u32			num_sge;
+	__u32			padding;
+	struct rxe_dma_info	dma;
+};
+
+#endif /* RDMA_USER_RXE_H */
diff --git a/buildlib/fixup-include/valgrind-memcheck.h b/buildlib/fixup-include/valgrind-memcheck.h
new file mode 100644
index 000000000000..6457a5a0f6a1
--- /dev/null
+++ b/buildlib/fixup-include/valgrind-memcheck.h
@@ -0,0 +1,5 @@
+static inline void VALGRIND_MAKE_MEM_DEFINED(const void *mem,size_t len) {}
+#define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_MEM_DEFINED
+
+static inline void VALGRIND_MAKE_MEM_UNDEFINED(const void *mem,size_t len) {}
+#define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_MEM_UNDEFINED
diff --git a/buildlib/provider.map b/buildlib/provider.map
new file mode 100644
index 000000000000..4ede3a8b1dc0
--- /dev/null
+++ b/buildlib/provider.map
@@ -0,0 +1,6 @@
+/* The providers do not export any symbols at all. Instead they rely on
+   attribute(constructor) to cause their init function to run at dlopen
+   time. */
+{
+	local: *;
+};
\ No newline at end of file
diff --git a/buildlib/publish_headers.cmake b/buildlib/publish_headers.cmake
new file mode 100644
index 000000000000..91fc386d0e64
--- /dev/null
+++ b/buildlib/publish_headers.cmake
@@ -0,0 +1,20 @@
+# COPYRIGHT (c) 2016 Obsidian Research Corporation. See COPYING file
+
+# Copy headers from the source directory to the proper place in the
+# build/include directory
+function(PUBLISH_HEADERS DEST)
+  if(NOT ARGN)
+    message(SEND_ERROR "Error: PUBLISH_HEADERS called without any files")
+    return()
+  endif()
+
+  set(DDIR "${BUILD_INCLUDE}/${DEST}")
+  file(MAKE_DIRECTORY "${DDIR}")
+
+  foreach(SFIL ${ARGN})
+    get_filename_component(FIL ${SFIL} NAME)
+    execute_process(COMMAND "ln" "-Tsf"
+      "${CMAKE_CURRENT_SOURCE_DIR}/${SFIL}" "${DDIR}/${FIL}")
+    install(FILES "${SFIL}" DESTINATION "include/${DEST}/" RENAME "${FIL}")
+  endforeach()
+endfunction()
diff --git a/buildlib/rdma_functions.cmake b/buildlib/rdma_functions.cmake
new file mode 100644
index 000000000000..f698855563e9
--- /dev/null
+++ b/buildlib/rdma_functions.cmake
@@ -0,0 +1,242 @@
+# COPYRIGHT (c) 2016 Obsidian Research Corporation. See COPYING file
+
+# Helper functions for use in the sub CMakeLists files to make them simpler
+# and more uniform.
+
+# Global list of pairs of (SHARED STATIC) libary target names
+set(RDMA_STATIC_LIBS "" CACHE INTERNAL "Doc" FORCE)
+
+# Modify shared library target DEST to use VERSION_SCRIPT as the linker map file
+function(rdma_set_library_map DEST VERSION_SCRIPT)
+  if (NOT IS_ABSOLUTE ${VERSION_SCRIPT})
+    set(VERSION_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/${VERSION_SCRIPT}")
+  endif()
+  set_property(TARGET ${DEST} APPEND_STRING PROPERTY
+    LINK_FLAGS " -Wl,--version-script,${VERSION_SCRIPT}")
+
+  # NOTE: This won't work with ninja prior to cmake 3.4
+  set_property(TARGET ${DEST} APPEND_STRING PROPERTY
+    LINK_DEPENDS ${VERSION_SCRIPT})
+endfunction()
+
+# Basic function to produce a standard libary with a GNU LD version script.
+function(rdma_library DEST VERSION_SCRIPT SOVERSION VERSION)
+  # Create a static library
+  add_library(${DEST}-static STATIC ${ARGN})
+  set_target_properties(${DEST}-static PROPERTIES
+    OUTPUT_NAME ${DEST}
+    LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
+  install(TARGETS ${DEST}-static DESTINATION lib)
+
+  list(APPEND RDMA_STATIC_LIBS ${DEST} ${DEST}-static)
+  set(RDMA_STATIC_LIBS "${RDMA_STATIC_LIBS}" CACHE INTERNAL "")
+
+  # Create a shared library
+  add_library(${DEST} SHARED ${ARGN})
+  rdma_set_library_map(${DEST} ${VERSION_SCRIPT})
+  set_target_properties(${DEST} PROPERTIES
+    SOVERSION ${SOVERSION}
+    VERSION ${VERSION}
+    LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
+  install(TARGETS ${DEST} DESTINATION lib)
+endfunction()
+
+# Create a provider shared library for libibverbs
+function(rdma_provider DEST)
+  # Installed driver file
+  install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CONFIG_DIR}/\")")
+  install(CODE "file(WRITE \$ENV{DESTDIR}${CONFIG_DIR}/${DEST}.driver \"driver ${DEST}\\n\")")
+
+  # Uninstalled driver file
+  file(MAKE_DIRECTORY "${BUILD_LIB}/libibverbs.d/")
+  file(WRITE "${BUILD_LIB}/libibverbs.d/${DEST}.driver" "driver ${BUILD_LIB}/${DEST}\n")
+
+  # FIXME: This symlink is provided for compat with the old build, but it
+  # never should have existed in the first place, nothing should use this
+  # name, we can probably remove it.
+  install(CODE "execute_process(COMMAND ln -sTf lib${DEST}-rdmav2.so \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/lib/lib${DEST}.so\")")
+
+  # Create a static provider library
+  add_library(${DEST} STATIC ${ARGN})
+  set_target_properties(${DEST} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
+  install(TARGETS ${DEST} DESTINATION lib)
+
+  list(APPEND RDMA_STATIC_LIBS ${DEST}-rdmav2 ${DEST})
+  set(RDMA_STATIC_LIBS "${RDMA_STATIC_LIBS}" CACHE INTERNAL "")
+
+  # Create the plugin shared library
+  set(DEST ${DEST}-rdmav2)
+  add_library(${DEST} MODULE ${ARGN})
+  rdma_set_library_map(${DEST} ${BUILDLIB}/provider.map)
+  target_link_libraries(${DEST} PRIVATE ibverbs)
+  target_link_libraries(${DEST} PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+  set_target_properties(${DEST} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
+  # Provider Plugins do not use SONAME versioning, there is no reason to
+  # create the usual symlinks.
+
+  install(TARGETS ${DEST} DESTINATION lib)
+endfunction()
+
+ # Create an installed executable
+function(rdma_executable EXEC)
+  add_executable(${EXEC} ${ARGN})
+  set_target_properties(${EXEC} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${BUILD_BIN}")
+  install(TARGETS ${EXEC} DESTINATION bin)
+endfunction()
+
+# Create an test executable (not-installed)
+function(rdma_test_executable EXEC)
+  add_executable(${EXEC} ${ARGN})
+  set_target_properties(${EXEC} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${BUILD_BIN}")
+endfunction()
+
+# Install man pages. This deduces the section from the trailing integer in the
+# filename
+function(rdma_man_pages)
+  foreach(I ${ARGN})
+    string(REGEX REPLACE "^.+[.](.+)$" "\\1" MAN_SECT ${I})
+    install(FILES ${I} DESTINATION "share/man/man${MAN_SECT}/")
+  endforeach()
+endfunction()
+
+# Create an alias for a man page, using a symlink.
+# Input is a list of pairs of names (MAN_PAGE ALIAS)
+# NOTE: The section must currently be the same for both.
+function(rdma_alias_man_pages)
+  list(LENGTH ARGN LEN)
+  math(EXPR LEN ${LEN}-1)
+  foreach(I RANGE 0 ${LEN} 2)
+    list(GET ARGN ${I} FROM)
+    math(EXPR I ${I}+1)
+    list(GET ARGN ${I} TO)
+    string(REGEX REPLACE "^.+[.](.+)$" "\\1" MAN_SECT ${FROM})
+    install(CODE "execute_process(COMMAND ln -sTf ${FROM} \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/share/man/man${MAN_SECT}/${TO}\")")
+  endforeach()
+endfunction()
+
+# For compatability write out a libtool .la file. This is only meaningful if
+# the end user is statically linking, and only if the library has dependent
+# libraries.
+
+# FIXME: it isn't clear how this is actually useful for provider libraries and
+# libibverbs itself, the user must do some trick to get the constructor to run
+# in the provider, at least how to do that should be documented someplace..
+function(rdma_make_libtool_la SHARED STATIC LIBS)
+  get_property(LIB TARGET ${STATIC} PROPERTY OUTPUT_NAME SET)
+  if (LIB)
+    get_target_property(LIB ${STATIC} OUTPUT_NAME)
+  else()
+    set(LIB ${STATIC})
+  endif()
+
+  set(BARE_LAFN "${CMAKE_STATIC_LIBRARY_PREFIX}${LIB}.la")
+  set(BARE_LIBFN "${CMAKE_STATIC_LIBRARY_PREFIX}${LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}")
+
+  get_property(SOLIB TARGET ${SHARED} PROPERTY OUTPUT_NAME SET)
+  if (SOLIB)
+    get_target_property(SOLIB ${SHARED} OUTPUT_NAME)
+  else()
+    set(SOLIB ${SHARED})
+  endif()
+
+  set(DLNAME "${CMAKE_SHARED_LIBRARY_PREFIX}${SOLIB}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  get_property(TMP TARGET ${SHARED} PROPERTY SOVERSION SET)
+  if (TMP)
+    get_target_property(VERSION ${SHARED} VERSION)
+    get_target_property(SOVERSION ${SHARED} SOVERSION)
+    set(NAMES "${DLNAME}.${VERSION} ${DLNAME}.${SOVERSION} ${DLNAME}")
+    set(DLNAME "${DLNAME}.${SOVERSION}")
+  else()
+    set(NAMES "${DLNAME}")
+    set(DLNAME "${CMAKE_SHARED_LIBRARY_PREFIX}${SOLIB}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  endif()
+
+  if (LIBS)
+    list(REMOVE_DUPLICATES LIBS)
+    foreach(I ${LIBS})
+      if (I MATCHES "^-l")
+	list(APPEND DEPS "${I}")
+      else()
+	list(APPEND DEPS "-l${I}")
+      endif()
+    endforeach()
+    string(REPLACE ";" " " DEPS "${DEPS}")
+  endif()
+
+  set(LAFN "${BUILD_LIB}/${BARE_LAFN}")
+  file(WRITE ${LAFN}
+    "# ${BARE_LAFN} - a libtool library file\n"
+    "# Generated by cmake\n"
+    "#\n"
+    "# Please DO NOT delete this file!\n"
+    "# It is necessary for linking the library.\n"
+    "\n"
+    "# The name that we can dlopen(3).\n"
+    "dlname='${DLNAME}'\n"
+    "\n"
+    "# Names of this library.\n"
+    "library_names='${NAMES}'\n"
+    "\n"
+    "# The name of the static archive.\n"
+    "old_library='${BARE_LIBFN}'\n"
+    "\n"
+    "# Linker flags that can not go in dependency_libs.\n"
+    "inherited_linker_flags=''\n"
+    "\n"
+    "# Libraries that this one depends upon.\n"
+    "dependency_libs='${DEPS}'\n"
+    "\n"
+    "# Names of additional weak libraries provided by this library\n"
+    "weak_library_names=''\n"
+    "\n"
+    "# Version information for ${CMAKE_STATIC_LIBRARY_PREFIX}${LIB}.\n"
+    # We don't try very hard to emulate this, it isn't used for static linking anyhow
+    "current=${SOVERSION}\n"
+    "age=0\n"
+    "revision=0\n"
+    "\n"
+    "# Is this an already installed library?\n"
+    "installed=yes\n"
+    "\n"
+    "# Should we warn about portability when linking against -modules?\n"
+    "shouldnotlink=no\n"
+    "\n"
+    "# Files to dlopen/dlpreopen\n"
+    "dlopen=''\n"
+    "dlpreopen=''\n"
+    "\n"
+    "# Directory that this library needs to be installed in:\n"
+    "libdir='${CMAKE_INSTALL_PREFIX}/lib'\n"
+    )
+  install(FILES ${LAFN} DESTINATION "lib/")
+endfunction()
+
+# Finalize the setup of the static libraries by copying the meta information
+# from the shared and setting up the libtool .la files.
+function(rdma_finalize_libs)
+  list(LENGTH RDMA_STATIC_LIBS LEN)
+  math(EXPR LEN ${LEN}-1)
+  foreach(I RANGE 0 ${LEN} 2)
+    list(GET RDMA_STATIC_LIBS ${I} SHARED)
+    math(EXPR I ${I}+1)
+    list(GET RDMA_STATIC_LIBS ${I} STATIC)
+
+    # PUBLIC libraries
+    get_property(TMP TARGET ${SHARED} PROPERTY INTERFACE_LINK_LIBRARIES SET)
+    if (TMP)
+      get_target_property(TMP ${SHARED} INTERFACE_LINK_LIBRARIES)
+      set_target_properties(${STATIC} PROPERTIES INTERFACE_LINK_LIBRARIES "${TMP}")
+      set(LIBS "${TMP}")
+    endif()
+
+    # PRIVATE libraries
+    get_property(TMP TARGET ${SHARED} PROPERTY LINK_LIBRARIES SET)
+    if (TMP)
+      get_target_property(TMP ${SHARED} LINK_LIBRARIES)
+      set_target_properties(${STATIC} PROPERTIES LINK_LIBRARIES "${TMP}")
+      list(APPEND LIBS "${TMP}")
+    endif()
+
+    rdma_make_libtool_la(${SHARED} ${STATIC} "${LIBS}")
+  endforeach()
+endfunction()
diff --git a/libcxgb3/src/CMakeLists.txt b/libcxgb3/src/CMakeLists.txt
new file mode 100644
index 000000000000..a578105e7b28
--- /dev/null
+++ b/libcxgb3/src/CMakeLists.txt
@@ -0,0 +1,6 @@
+rdma_provider(cxgb3
+  cq.c
+  iwch.c
+  qp.c
+  verbs.c
+)
diff --git a/libcxgb4/src/CMakeLists.txt b/libcxgb4/src/CMakeLists.txt
new file mode 100644
index 000000000000..79da381210e6
--- /dev/null
+++ b/libcxgb4/src/CMakeLists.txt
@@ -0,0 +1,6 @@
+rdma_provider(cxgb4
+  cq.c
+  dev.c
+  qp.c
+  verbs.c
+)
diff --git a/libhfi1verbs/src/CMakeLists.txt b/libhfi1verbs/src/CMakeLists.txt
new file mode 100644
index 000000000000..702bb5e23b30
--- /dev/null
+++ b/libhfi1verbs/src/CMakeLists.txt
@@ -0,0 +1,4 @@
+rdma_provider(hfi1verbs
+  hfiverbs.c
+  verbs.c
+  )
diff --git a/libi40iw/src/CMakeLists.txt b/libi40iw/src/CMakeLists.txt
new file mode 100644
index 000000000000..d8a3a3c2c414
--- /dev/null
+++ b/libi40iw/src/CMakeLists.txt
@@ -0,0 +1,5 @@
+rdma_provider(i40iw
+  i40iw_uk.c
+  i40iw_umain.c
+  i40iw_uverbs.c
+)
diff --git a/libibcm/examples/CMakeLists.txt b/libibcm/examples/CMakeLists.txt
new file mode 100644
index 000000000000..a90639dae768
--- /dev/null
+++ b/libibcm/examples/CMakeLists.txt
@@ -0,0 +1,2 @@
+rdma_test_executable(cmpost cmpost.c)
+target_link_libraries(cmpost ibcm rdmacm)
diff --git a/libibcm/src/CMakeLists.txt b/libibcm/src/CMakeLists.txt
new file mode 100644
index 000000000000..01f85c0ea638
--- /dev/null
+++ b/libibcm/src/CMakeLists.txt
@@ -0,0 +1,9 @@
+publish_headers(infiniband
+  ../include/infiniband/cm.h
+  ../include/infiniband/cm_abi.h
+  )
+
+rdma_library(ibcm libibcm.map 1 1.0.0
+  cm.c
+  )
+target_link_libraries(ibcm PUBLIC ibverbs)
diff --git a/libibumad/man/CMakeLists.txt b/libibumad/man/CMakeLists.txt
new file mode 100644
index 000000000000..b7a191261ec0
--- /dev/null
+++ b/libibumad/man/CMakeLists.txt
@@ -0,0 +1,42 @@
+rdma_man_pages(
+  umad_addr_dump.3
+  umad_alloc.3
+  umad_attribute_str.3
+  umad_class_str.3
+  umad_close_port.3
+  umad_debug.3
+  umad_dump.3
+  umad_free.3
+  umad_get_ca.3
+  umad_get_ca_portguids.3
+  umad_get_cas_names.3
+  umad_get_fd.3
+  umad_get_issm_path.3
+  umad_get_mad.3
+  umad_get_mad_addr.3
+  umad_get_pkey.3
+  umad_get_port.3
+  umad_init.3
+  umad_mad_status_str.3
+  umad_method_str.3
+  umad_open_port.3
+  umad_poll.3
+  umad_recv.3
+  umad_register.3
+  umad_register2.3
+  umad_register_oui.3
+  umad_send.3
+  umad_set_addr.3
+  umad_set_addr_net.3
+  umad_set_grh.3
+  umad_set_grh_net.3
+  umad_set_pkey.3
+  umad_size.3
+  umad_status.3
+  umad_unregister.3
+  )
+rdma_alias_man_pages(
+  umad_get_ca.3 umad_release_ca.3
+  umad_get_port.3 umad_release_port.3
+  umad_init.3 umad_done.3
+  )
\ No newline at end of file
diff --git a/libibumad/src/CMakeLists.txt b/libibumad/src/CMakeLists.txt
new file mode 100644
index 000000000000..b7b5d03bc53e
--- /dev/null
+++ b/libibumad/src/CMakeLists.txt
@@ -0,0 +1,14 @@
+publish_headers(infiniband
+  ../include/infiniband/umad.h
+  ../include/infiniband/umad_cm.h
+  ../include/infiniband/umad_sa.h
+  ../include/infiniband/umad_sm.h
+  ../include/infiniband/umad_str.h
+  ../include/infiniband/umad_types.h
+  )
+
+rdma_library(ibumad libibumad.map 3 3.1.0
+  sysfs.c
+  umad.c
+  umad_str.c
+  )
diff --git a/libibumad/tests/CMakeLists.txt b/libibumad/tests/CMakeLists.txt
new file mode 100644
index 000000000000..9676029c8688
--- /dev/null
+++ b/libibumad/tests/CMakeLists.txt
@@ -0,0 +1,5 @@
+rdma_test_executable(umad_reg2 umad_reg2_compat.c)
+target_link_libraries(umad_reg2 ibumad)
+
+rdma_test_executable(umad_register2 umad_register2.c)
+target_link_libraries(umad_register2 ibumad)
diff --git a/libibverbs/examples/CMakeLists.txt b/libibverbs/examples/CMakeLists.txt
new file mode 100644
index 000000000000..5d0df01ca959
--- /dev/null
+++ b/libibverbs/examples/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Shared example files
+add_library(ibverbs_tools STATIC
+  pingpong.c
+  )
+
+rdma_executable(ibv_asyncwatch asyncwatch.c)
+target_link_libraries(ibv_asyncwatch ibverbs)
+
+rdma_executable(ibv_devices device_list.c)
+target_link_libraries(ibv_devices ibverbs)
+
+rdma_executable(ibv_devinfo devinfo.c)
+target_link_libraries(ibv_devinfo ibverbs)
+
+# FIXME: pingpong.o should be a object library
+rdma_executable(ibv_rc_pingpong rc_pingpong.c)
+target_link_libraries(ibv_rc_pingpong ibverbs ibverbs_tools)
+
+rdma_executable(ibv_srq_pingpong srq_pingpong.c)
+target_link_libraries(ibv_srq_pingpong ibverbs ibverbs_tools)
+
+rdma_executable(ibv_uc_pingpong uc_pingpong.c)
+target_link_libraries(ibv_uc_pingpong ibverbs ibverbs_tools)
+
+rdma_executable(ibv_ud_pingpong ud_pingpong.c)
+target_link_libraries(ibv_ud_pingpong ibverbs ibverbs_tools)
+
+rdma_executable(ibv_xsrq_pingpong xsrq_pingpong.c)
+target_link_libraries(ibv_xsrq_pingpong ibverbs ibverbs_tools)
diff --git a/libibverbs/man/CMakeLists.txt b/libibverbs/man/CMakeLists.txt
new file mode 100644
index 000000000000..e9d757a77f34
--- /dev/null
+++ b/libibverbs/man/CMakeLists.txt
@@ -0,0 +1,78 @@
+rdma_man_pages(
+  ibv_alloc_mw.3
+  ibv_alloc_pd.3
+  ibv_asyncwatch.1
+  ibv_attach_mcast.3
+  ibv_bind_mw.3
+  ibv_create_ah.3
+  ibv_create_ah_from_wc.3
+  ibv_create_comp_channel.3
+  ibv_create_cq.3
+  ibv_create_cq_ex.3
+  ibv_create_flow.3
+  ibv_create_qp.3
+  ibv_create_qp_ex.3
+  ibv_create_srq.3
+  ibv_create_srq_ex.3
+  ibv_devices.1
+  ibv_devinfo.1
+  ibv_event_type_str.3
+  ibv_fork_init.3
+  ibv_get_async_event.3
+  ibv_get_cq_event.3
+  ibv_get_device_guid.3
+  ibv_get_device_list.3
+  ibv_get_device_name.3
+  ibv_get_srq_num.3
+  ibv_inc_rkey.3
+  ibv_modify_qp.3
+  ibv_modify_srq.3
+  ibv_open_device.3
+  ibv_open_qp.3
+  ibv_open_xrcd.3
+  ibv_poll_cq.3
+  ibv_post_recv.3
+  ibv_post_send.3
+  ibv_post_srq_recv.3
+  ibv_query_device.3
+  ibv_query_device_ex.3
+  ibv_query_gid.3
+  ibv_query_pkey.3
+  ibv_query_port.3
+  ibv_query_qp.3
+  ibv_query_rt_values_ex.3
+  ibv_query_srq.3
+  ibv_rate_to_mbps.3
+  ibv_rate_to_mult.3
+  ibv_rc_pingpong.1
+  ibv_reg_mr.3
+  ibv_req_notify_cq.3
+  ibv_rereg_mr.3
+  ibv_resize_cq.3
+  ibv_srq_pingpong.1
+  ibv_uc_pingpong.1
+  ibv_ud_pingpong.1
+  ibv_xsrq_pingpong.1
+  )
+rdma_alias_man_pages(
+  ibv_alloc_mw.3 ibv_dealloc_mw.3
+  ibv_alloc_pd.3 ibv_dealloc_pd.3
+  ibv_attach_mcast.3 ibv_detach_mcast.3
+  ibv_create_ah.3 ibv_destroy_ah.3
+  ibv_create_ah_from_wc.3 ibv_init_ah_from_wc.3
+  ibv_create_comp_channel.3 ibv_destroy_comp_channel.3
+  ibv_create_cq.3 ibv_destroy_cq.3
+  ibv_create_flow.3 ibv_destroy_flow.3
+  ibv_create_qp.3 ibv_destroy_qp.3
+  ibv_create_srq.3 ibv_destroy_srq.3
+  ibv_event_type_str.3 ibv_node_type_str.3
+  ibv_event_type_str.3 ibv_port_state_str.3
+  ibv_get_async_event.3 ibv_ack_async_event.3
+  ibv_get_cq_event.3 ibv_ack_cq_events.3
+  ibv_get_device_list.3 ibv_free_device_list.3
+  ibv_open_device.3 ibv_close_device.3
+  ibv_open_xrcd.3 ibv_close_xrcd.3
+  ibv_rate_to_mbps.3 mbps_to_ibv_rate.3
+  ibv_rate_to_mult.3 mult_to_ibv_rate.3
+  ibv_reg_mr.3 ibv_dereg_mr.3
+  )
\ No newline at end of file
diff --git a/libibverbs/src/CMakeLists.txt b/libibverbs/src/CMakeLists.txt
new file mode 100644
index 000000000000..5e680da430c1
--- /dev/null
+++ b/libibverbs/src/CMakeLists.txt
@@ -0,0 +1,34 @@
+publish_headers(infiniband
+  ../include/infiniband/arch.h
+  ../include/infiniband/driver.h
+  ../include/infiniband/kern-abi.h
+  ../include/infiniband/marshall.h
+  ../include/infiniband/opcode.h
+  ../include/infiniband/sa-kern-abi.h
+  ../include/infiniband/sa.h
+  ../include/infiniband/verbs.h
+  )
+
+if (NOT NL_KIND EQUAL 0)
+  set(NEIGH "neigh.c")
+else()
+  set(NEIGH "")
+endif()
+
+rdma_library(ibverbs libibverbs.map 1 1.0.0
+  cmd.c
+  compat-1_0.c
+  device.c
+  enum_strs.c
+  init.c
+  marshall.c
+  memory.c
+  ${NEIGH}
+  sysfs.c
+  verbs.c
+  )
+target_link_libraries(ibverbs PRIVATE
+  ${NL_LIBRARIES}
+  ${CMAKE_THREAD_LIBS_INIT}
+  ${CMAKE_DL_LIBS}
+  )
diff --git a/libipathverbs/CMakeLists.txt b/libipathverbs/CMakeLists.txt
new file mode 100644
index 000000000000..eba006e4c409
--- /dev/null
+++ b/libipathverbs/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(FILES truescale.conf DESTINATION "${SYSCONFDIR}/modprobe.d/")
+install(FILES truescale-serdes.cmds
+  DESTINATION "sbin/"
+  PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
diff --git a/libipathverbs/src/CMakeLists.txt b/libipathverbs/src/CMakeLists.txt
new file mode 100644
index 000000000000..20924fda7900
--- /dev/null
+++ b/libipathverbs/src/CMakeLists.txt
@@ -0,0 +1,4 @@
+rdma_provider(ipathverbs
+  ipathverbs.c
+  verbs.c
+  )
diff --git a/libmlx4/src/CMakeLists.txt b/libmlx4/src/CMakeLists.txt
new file mode 100644
index 000000000000..d64d817479bf
--- /dev/null
+++ b/libmlx4/src/CMakeLists.txt
@@ -0,0 +1,9 @@
+rdma_provider(mlx4
+  buf.c
+  cq.c
+  dbrec.c
+  mlx4.c
+  qp.c
+  srq.c
+  verbs.c
+)
diff --git a/libmlx5/src/CMakeLists.txt b/libmlx5/src/CMakeLists.txt
new file mode 100644
index 000000000000..a34a8063eeb2
--- /dev/null
+++ b/libmlx5/src/CMakeLists.txt
@@ -0,0 +1,9 @@
+rdma_provider(mlx5
+  buf.c
+  cq.c
+  dbrec.c
+  mlx5.c
+  qp.c
+  srq.c
+  verbs.c
+)
diff --git a/libmthca/src/CMakeLists.txt b/libmthca/src/CMakeLists.txt
new file mode 100644
index 000000000000..63d714704144
--- /dev/null
+++ b/libmthca/src/CMakeLists.txt
@@ -0,0 +1,10 @@
+rdma_provider(mthca
+  ah.c
+  buf.c
+  cq.c
+  memfree.c
+  mthca.c
+  qp.c
+  srq.c
+  verbs.c
+)
diff --git a/libnes/src/CMakeLists.txt b/libnes/src/CMakeLists.txt
new file mode 100644
index 000000000000..0c7fa8fad09f
--- /dev/null
+++ b/libnes/src/CMakeLists.txt
@@ -0,0 +1,4 @@
+rdma_provider(nes
+  nes_umain.c
+  nes_uverbs.c
+)
diff --git a/libocrdma/src/CMakeLists.txt b/libocrdma/src/CMakeLists.txt
new file mode 100644
index 000000000000..08623adb4a6f
--- /dev/null
+++ b/libocrdma/src/CMakeLists.txt
@@ -0,0 +1,4 @@
+rdma_provider(ocrdma
+  ocrdma_main.c
+  ocrdma_verbs.c
+  )
diff --git a/librdmacm/examples/CMakeLists.txt b/librdmacm/examples/CMakeLists.txt
new file mode 100644
index 000000000000..31c9606383a0
--- /dev/null
+++ b/librdmacm/examples/CMakeLists.txt
@@ -0,0 +1,43 @@
+# Shared example files
+add_library(rdmacm_tools STATIC
+  common.c
+  )
+
+rdma_executable(cmtime cmtime.c)
+target_link_libraries(cmtime rdmacm ${CMAKE_THREAD_LIBS_INIT} rdmacm_tools)
+
+rdma_executable(mckey mckey.c)
+target_link_libraries(mckey rdmacm ${CMAKE_THREAD_LIBS_INIT})
+
+rdma_executable(rcopy rcopy.c)
+target_link_libraries(rcopy rdmacm)
+
+rdma_executable(rdma_client rdma_client.c)
+target_link_libraries(rdma_client rdmacm)
+
+rdma_executable(rdma_server rdma_server.c)
+target_link_libraries(rdma_server rdmacm)
+
+rdma_executable(rdma_xclient rdma_xclient.c)
+target_link_libraries(rdma_xclient rdmacm)
+
+rdma_executable(rdma_xserver rdma_xserver.c)
+target_link_libraries(rdma_xserver rdmacm)
+
+rdma_executable(riostream riostream.c)
+target_link_libraries(riostream rdmacm rdmacm_tools)
+
+rdma_executable(rping rping.c)
+target_link_libraries(rping rdmacm ${CMAKE_THREAD_LIBS_INIT})
+
+rdma_executable(rstream rstream.c)
+target_link_libraries(rstream rdmacm rdmacm_tools)
+
+rdma_executable(ucmatose cmatose.c)
+target_link_libraries(ucmatose rdmacm rdmacm_tools)
+
+rdma_executable(udaddy udaddy.c)
+target_link_libraries(udaddy rdmacm rdmacm_tools)
+
+rdma_executable(udpong udpong.c)
+target_link_libraries(udpong rdmacm rdmacm_tools)
diff --git a/librdmacm/man/CMakeLists.txt b/librdmacm/man/CMakeLists.txt
new file mode 100644
index 000000000000..791c98265ad0
--- /dev/null
+++ b/librdmacm/man/CMakeLists.txt
@@ -0,0 +1,65 @@
+rdma_man_pages(
+  mckey.1
+  rcopy.1
+  rdma_accept.3
+  rdma_ack_cm_event.3
+  rdma_bind_addr.3
+  rdma_client.1
+  rdma_cm.7
+  rdma_connect.3
+  rdma_create_ep.3
+  rdma_create_event_channel.3
+  rdma_create_id.3
+  rdma_create_qp.3
+  rdma_create_srq.3
+  rdma_dereg_mr.3
+  rdma_destroy_ep.3
+  rdma_destroy_event_channel.3
+  rdma_destroy_id.3
+  rdma_destroy_qp.3
+  rdma_destroy_srq.3
+  rdma_disconnect.3
+  rdma_event_str.3
+  rdma_free_devices.3
+  rdma_get_cm_event.3
+  rdma_get_devices.3
+  rdma_get_dst_port.3
+  rdma_get_local_addr.3
+  rdma_get_peer_addr.3
+  rdma_get_recv_comp.3
+  rdma_get_request.3
+  rdma_get_send_comp.3
+  rdma_get_src_port.3
+  rdma_getaddrinfo.3
+  rdma_join_multicast.3
+  rdma_leave_multicast.3
+  rdma_listen.3
+  rdma_migrate_id.3
+  rdma_notify.3
+  rdma_post_read.3
+  rdma_post_readv.3
+  rdma_post_recv.3
+  rdma_post_recvv.3
+  rdma_post_send.3
+  rdma_post_sendv.3
+  rdma_post_ud_send.3
+  rdma_post_write.3
+  rdma_post_writev.3
+  rdma_reg_msgs.3
+  rdma_reg_read.3
+  rdma_reg_write.3
+  rdma_reject.3
+  rdma_resolve_addr.3
+  rdma_resolve_route.3
+  rdma_server.1
+  rdma_set_option.3
+  rdma_xclient.1
+  rdma_xserver.1
+  riostream.1
+  rping.1
+  # FIXME: rsocket has a text substitution but nothing ever filled it in.
+  rsocket.7
+  rstream.1
+  ucmatose.1
+  udaddy.1
+  )
diff --git a/librdmacm/src/CMakeLists.txt b/librdmacm/src/CMakeLists.txt
new file mode 100644
index 000000000000..c68b277f8c1c
--- /dev/null
+++ b/librdmacm/src/CMakeLists.txt
@@ -0,0 +1,39 @@
+publish_headers(rdma
+  ../include/rdma/rdma_cma.h
+  ../include/rdma/rdma_cma_abi.h
+  ../include/rdma/rdma_verbs.h
+  ../include/rdma/rsocket.h
+  )
+publish_headers(infiniband
+  ../include/infiniband/ib.h
+  )
+
+rdma_library(rdmacm librdmacm.map 1 1.0.0
+  acm.c
+  addrinfo.c
+  cma.c
+  indexer.c
+  rsocket.c
+  )
+target_link_libraries(rdmacm PUBLIC ibverbs)
+target_link_libraries(rdmacm PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+
+# The preload library is a bit special, it needs to be open coded
+# Since it is a LD_PRELOAD it has no soname, and is installed in sub dir
+add_library(rspreload SHARED
+  preload.c
+  indexer.c
+  )
+set_target_properties(rspreload PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${BUILD_LIB}")
+rdma_set_library_map(rspreload librspreload.map)
+target_link_libraries(rspreload PRIVATE
+  rdmacm
+  ${CMAKE_THREAD_LIBS_INIT}
+  ${CMAKE_DL_LIBS}
+)
+install(TARGETS rspreload DESTINATION lib/rsocket/)
+
+# These are for compat with old packaging, these name should not be used.
+# FIXME: Maybe we can get rid of them?
+install(CODE "execute_process(COMMAND ln -sTf librspreload.so \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/lib/rsocket/librspreload.so.1\")")
+install(CODE "execute_process(COMMAND ln -sTf librspreload.so \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/lib/rsocket/librspreload.so.1.0.0\")")
diff --git a/librxe/CMakeLists.txt b/librxe/CMakeLists.txt
new file mode 100644
index 000000000000..d736c67e53d9
--- /dev/null
+++ b/librxe/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(FILES rxe_cfg
+  DESTINATION bin/
+  PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE
+  )
diff --git a/librxe/man/CMakeLists.txt b/librxe/man/CMakeLists.txt
new file mode 100644
index 000000000000..69e8bd8cf20c
--- /dev/null
+++ b/librxe/man/CMakeLists.txt
@@ -0,0 +1,4 @@
+rdma_man_pages(
+  rxe.7
+  rxe_cfg.8
+)
diff --git a/librxe/src/CMakeLists.txt b/librxe/src/CMakeLists.txt
new file mode 100644
index 000000000000..d8f3265176e4
--- /dev/null
+++ b/librxe/src/CMakeLists.txt
@@ -0,0 +1,3 @@
+rdma_provider(rxe
+  rxe.c
+  )
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-08-22 18:13 UTC|newest]

Thread overview: 174+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-22 18:13 [RFCv2 00/15] RFCv2: Consolidated userspace RDMA library repo Jason Gunthorpe
     [not found] ` <1471889618-1605-1-git-send-email-jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-22 18:13   ` [RFCv2 01/15] Fix bogus executable file permissions Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 02/15] umad: Include umad.h in the canonical way Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 03/15] rdmacm: Control symbol export from librspreload Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 04/15] ibcm: Actually use the version script when linking Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 05/15] Include pthreads in the provider libraries Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 06/15] Be explicit about _GNU_SOURCE Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 07/15] hfi/ipath: Use the name of the provider for the .driver file Jason Gunthorpe
2016-08-22 18:13   ` Jason Gunthorpe [this message]
2016-08-22 18:13   ` [RFCv2 09/15] Support obsolete cmake from 2013 Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 10/15] Remove the auto* based build systems Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 11/15] Remove the ChangeLog files Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 12/15] Combine COPYING files Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 13/15] Consolidate the .gitignore files Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 14/15] Move providers into providers/ Jason Gunthorpe
2016-08-22 18:13   ` [RFCv2 15/15] Add a MAINTAINERS file Jason Gunthorpe
2016-08-22 20:06   ` [RFCv2 00/15] RFCv2: Consolidated userspace RDMA library repo Steve Wise
2016-08-22 20:12     ` Steve Wise
2016-08-22 21:43     ` Jason Gunthorpe
     [not found]       ` <20160822214352.GB11695-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-23 18:54         ` Jason Gunthorpe
     [not found]           ` <20160823185441.GA1233-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-25 14:20             ` Doug Ledford
     [not found]               ` <cabbd0a7-0918-a8dd-d1e5-0b079f0c4604-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-08-25 14:22                 ` Doug Ledford
     [not found]                   ` <f98718ea-72b5-e157-5f16-14ca51a85c53-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-08-25 16:47                     ` Jason Gunthorpe
     [not found]                       ` <20160825164753.GB20612-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-27  2:22                         ` Doug Ledford
2016-08-25 17:39                 ` Jason Gunthorpe
     [not found]                   ` <20160825173916.GC20612-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-25 19:52                     ` Jarod Wilson
     [not found]                       ` <20160825195246.GI1916-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-08-25 20:13                         ` Jason Gunthorpe
     [not found]                           ` <20160825201306.GA5421-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-25 20:32                             ` Steve Wise
2016-08-26 15:42                             ` Jarod Wilson
     [not found]                               ` <20160826154206.GK1916-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-08-26 22:27                                 ` Jason Gunthorpe
     [not found]                                   ` <20160826222725.GA8553-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-27  3:00                                     ` Doug Ledford
     [not found]                                       ` <5421f173-384d-faef-0eab-518db6dad0e5-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-08-27  3:50                                         ` Jason Gunthorpe
2016-08-30  1:27                                         ` Jarod Wilson
     [not found]                                           ` <20160830012738.GH6803-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-01 18:12                                             ` Doug Ledford
2016-09-06 19:26                                 ` Jason Gunthorpe
2016-08-27  3:17                             ` Doug Ledford
     [not found]                               ` <8ef70f6c-e26d-191d-9a9a-2e0bf47fb227-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-08-27  5:21                                 ` Jason Gunthorpe
2016-08-28 13:28                                 ` Leon Romanovsky
     [not found]                                   ` <20160828132804.GN594-2ukJVAZIZ/Y@public.gmane.org>
2016-08-28 18:36                                     ` Jason Gunthorpe
     [not found]                                       ` <20160828183627.GC12783-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-29  6:29                                         ` Leon Romanovsky
     [not found]                                           ` <20160829062918.GR594-2ukJVAZIZ/Y@public.gmane.org>
2016-08-29 16:00                                             ` Jason Gunthorpe
     [not found]                                               ` <20160829160009.GA23557-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-30  5:43                                                 ` Leon Romanovsky
     [not found]                                                   ` <20160830054352.GI594-2ukJVAZIZ/Y@public.gmane.org>
2016-08-30 16:47                                                     ` Jason Gunthorpe
2016-09-01 18:51                                             ` Doug Ledford
     [not found]                                               ` <fcfcff11-fe5c-6cf5-3575-52da4b9241ed-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-21 17:21                                                 ` ira.weiny
2016-08-27  3:34                     ` Doug Ledford
2016-08-28 16:14                 ` Yishai Hadas
     [not found]                   ` <c84de2a5-6526-c0a6-6535-519add3fbabb-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-08-28 18:27                     ` Jason Gunthorpe
     [not found]                       ` <20160828182715.GA12783-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-29 12:07                         ` Yishai Hadas
     [not found]                           ` <765b7e2d-51e0-98aa-60d1-26be35eb7a3d-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-08-29 16:34                             ` Jason Gunthorpe
     [not found]                               ` <20160829163453.GC23557-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-29 20:03                                 ` Yishai Hadas
     [not found]                                   ` <aaf8d6ba-6dc2-51d9-b014-dcc10114079f-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-08-29 20:37                                     ` Jason Gunthorpe
     [not found]                                       ` <20160829203711.GC3201-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-30  8:13                                         ` Yishai Hadas
     [not found]                                           ` <60e502b0-0933-588e-8afe-afead230b2a1-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-08-30 16:10                                             ` Jason Gunthorpe
2016-08-29 14:39                         ` Steve Wise
2016-08-29 16:19                           ` Jason Gunthorpe
     [not found]                             ` <20160829161902.GB23557-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-30  6:08                               ` Leon Romanovsky
     [not found]                                 ` <20160830060842.GJ594-2ukJVAZIZ/Y@public.gmane.org>
2016-08-30  7:17                                   ` Christoph Hellwig
     [not found]                                     ` <20160830071716.GA3098-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-08-30  7:35                                       ` Leon Romanovsky
     [not found]                                         ` <20160830073521.GM594-2ukJVAZIZ/Y@public.gmane.org>
2016-08-30 16:30                                           ` Jason Gunthorpe
     [not found]                                             ` <20160830163033.GC26778-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-30 19:02                                               ` Leon Romanovsky
2016-09-04  8:18                                               ` Sagi Grimberg
     [not found]                                                 ` <4b791de5-0d6e-fd94-8a31-2fe833ca72db-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2016-09-04  8:35                                                   ` Leon Romanovsky
     [not found]                                                     ` <20160904083517.GN21847-2ukJVAZIZ/Y@public.gmane.org>
2016-09-04 10:36                                                       ` Sagi Grimberg
     [not found]                                                         ` <a220db98-ebbf-5df4-e011-8804442796b8-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2016-09-04 21:40                                                           ` Doug Ledford
     [not found]                                                             ` <280b8620-0996-a9bc-dc93-bf5d710dd6de-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-05  1:51                                                               ` Jason Gunthorpe
2016-09-05  5:29                                                               ` Leon Romanovsky
2016-09-06  7:01                                                   ` Christoph Hellwig
     [not found]                                                     ` <20160906070102.GA23248-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-09-06  8:50                                                       ` Sagi Grimberg
     [not found]                                                         ` <6d47ca96-25eb-8358-879d-fc646ddda9cb-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2016-09-06 11:07                                                           ` Leon Romanovsky
     [not found]                                                             ` <20160906110729.GM21847-2ukJVAZIZ/Y@public.gmane.org>
2016-09-15  6:17                                                               ` Christoph Hellwig
     [not found]                                                                 ` <20160915061753.GD4869-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-09-15  6:52                                                                   ` Leon Romanovsky
     [not found]                                                                     ` <20160915065242.GO26069-2ukJVAZIZ/Y@public.gmane.org>
2016-09-15  8:06                                                                       ` Christoph Hellwig
     [not found]                                                                         ` <20160915080600.GA31776-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-09-15  8:11                                                                           ` Leon Romanovsky
     [not found]                                                                             ` <20160915081149.GT26069-2ukJVAZIZ/Y@public.gmane.org>
2016-09-15  8:13                                                                               ` Christoph Hellwig
     [not found]                                                                                 ` <20160915081327.GA7572-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-09-15  8:39                                                                                   ` Leon Romanovsky
     [not found]                                                                                     ` <20160915083945.GU26069-2ukJVAZIZ/Y@public.gmane.org>
2016-09-15 16:04                                                                                       ` Jason Gunthorpe
     [not found]                                                                                         ` <20160915160427.GC18154-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-15 16:09                                                                                           ` Steve Wise
2016-09-15 16:37                                                                                             ` Leon Romanovsky
     [not found]                                                                                               ` <20160915163756.GB26069-2ukJVAZIZ/Y@public.gmane.org>
2016-09-15 16:39                                                                                                 ` Steve Wise
2016-09-15 16:44                                                                                                   ` Leon Romanovsky
     [not found]                                                                                                     ` <20160915164416.GC26069-2ukJVAZIZ/Y@public.gmane.org>
2016-09-15 16:49                                                                                                       ` Woodruff, Robert J
     [not found]                                                                                                         ` <9C6B67F36DCAFC479B1CF6A967258A8C7DE1641A-8oqHQFITsIFqS6EAlXoojrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-15 18:55                                                                                                           ` Leon Romanovsky
2016-09-15 19:04                                                                                                       ` Bart Van Assche
     [not found]                                                                                                         ` <98fb59c6-2a6d-b36a-d582-e3b24a8d7024-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2016-09-15 19:17                                                                                                           ` Leon Romanovsky
2016-09-15 16:49                                                                                                 ` Jason Gunthorpe
     [not found]                                                                                                   ` <20160915164931.GC26111-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-15 18:53                                                                                                     ` Leon Romanovsky
2016-09-15 19:09                                                                                                     ` Steve Wise
2016-09-15 19:26                                                                                                       ` Jason Gunthorpe
     [not found]                                                                                                         ` <20160915192628.GB437-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-15 19:36                                                                                                           ` Steve Wise
2016-09-16  7:06                                                                                                             ` Weiny, Ira
     [not found]                                                                                                               ` <2807E5FD2F6FDA4886F6618EAC48510E24EE4644-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-16 13:51                                                                                                                 ` Steve Wise
2016-09-16 14:53                                                                                                                   ` Leon Romanovsky
2016-09-16  9:09                                                                                                           ` 'Christoph Hellwig'
2016-09-16 15:17                                                                                             ` Doug Ledford
2016-09-18 16:48                                                                                             ` Sagi Grimberg
     [not found]                                                                                               ` <33226ea3-bd5c-c40c-8080-def9d98980f9-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2016-09-18 16:53                                                                                                 ` Leon Romanovsky
     [not found]                                                                                                   ` <20160918165354.GK2923-2ukJVAZIZ/Y@public.gmane.org>
2016-09-18 17:04                                                                                                     ` Sagi Grimberg
2016-09-06 18:34                                                       ` Jason Gunthorpe
     [not found]                                                         ` <20160906183405.GA27914-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-07  6:56                                                           ` Leon Romanovsky
2016-09-07  8:21                                                           ` Sagi Grimberg
     [not found]                                                             ` <cd964412-11f3-d1ca-ef76-830a24cb8e68-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2016-09-07 13:14                                                               ` Yishai Hadas
     [not found]                                                                 ` <924d7775-0d24-e1ca-b0ee-226df053089a-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-07 15:58                                                                   ` Jason Gunthorpe
     [not found]                                                                     ` <20160907155849.GE2878-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-08  8:20                                                                       ` Sagi Grimberg
2016-09-06 19:38                                                   ` Jason Gunthorpe
2016-08-30 16:53                                   ` Jason Gunthorpe
     [not found]                                     ` <20160830165352.GE26778-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-08-30 18:38                                       ` Leon Romanovsky
2016-08-31 17:40                                   ` Woodruff, Robert J
     [not found]                                     ` <9C6B67F36DCAFC479B1CF6A967258A8C7DE04100-8oqHQFITsIFqS6EAlXoojrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-08-31 20:03                                       ` Jason Gunthorpe
     [not found]                                         ` <20160831200336.GA4134-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01  8:26                                           ` Christoph Hellwig
     [not found]                                             ` <20160901082643.GA19799-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-09-01 11:03                                               ` Leon Romanovsky
     [not found]                                                 ` <20160901110352.GI3694-2ukJVAZIZ/Y@public.gmane.org>
2016-09-01 12:39                                                   ` Christoph Lameter
     [not found]                                                     ` <alpine.DEB.2.20.1609010736370.31007-wcBtFHqTun5QOdAKl3ChDw@public.gmane.org>
2016-09-01 13:07                                                       ` Leon Romanovsky
     [not found]                                                         ` <20160901130705.GC21847-2ukJVAZIZ/Y@public.gmane.org>
2016-09-01 14:11                                                           ` Christoph Lameter
2016-09-01 18:14                                                   ` Jason Gunthorpe
     [not found]                                                     ` <20160901181421.GE20472-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 19:46                                                       ` Doug Ledford
2016-09-01 17:52                                               ` Jason Gunthorpe
     [not found]                                                 ` <20160901175230.GD20472-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 19:14                                                   ` Woodruff, Robert J
     [not found]                                                     ` <9C6B67F36DCAFC479B1CF6A967258A8C7DE04AA2-8oqHQFITsIFqS6EAlXoojrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-01 19:32                                                       ` Jason Gunthorpe
2016-09-01 14:21                                           ` Woodruff, Robert J
2016-09-01 15:29                                           ` ira.weiny
     [not found]                                             ` <20160901152920.GA23742-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-09-01 17:09                                               ` Jason Gunthorpe
     [not found]                                                 ` <20160901170955.GA19982-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 19:38                                                   ` Doug Ledford
     [not found]                                                     ` <a27267c8-3d5c-cdfe-ed2a-d57cb106a3bf-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-01 20:17                                                       ` Jason Gunthorpe
     [not found]                                                         ` <20160901201727.GG20472-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-04 21:38                                                           ` Doug Ledford
     [not found]                                                             ` <9efe8c8f-40e2-b016-9a1e-4770298b9068-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-05  2:34                                                               ` Jason Gunthorpe
2016-09-02  2:04                                                   ` ira.weiny
     [not found]                                                     ` <20160902020411.GD23742-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-09-02 17:18                                                       ` Jason Gunthorpe
2016-09-01 15:24   ` Sagi Grimberg
     [not found]     ` <4f0876ce-f3c9-83e3-d0ef-0c5656ce9462-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>
2016-09-01 15:29       ` Steve Wise
2016-09-01 15:56       ` Bart Van Assche
     [not found]         ` <53eb35b4-0320-acd9-9969-73f5817c8144-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2016-09-01 17:23           ` Jason Gunthorpe
     [not found]             ` <20160901172355.GA20472-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 18:36               ` Steve Wise
2016-09-02 23:32                 ` Jason Gunthorpe
     [not found]                   ` <20160902233231.GA26309-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-03  0:10                     ` Bart Van Assche
     [not found]                       ` <ef8214f8-d44d-2289-d1ed-a0998e9e05c0-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2016-09-03  5:12                         ` Jason Gunthorpe
2016-09-03 14:08                           ` Bart Van Assche
     [not found]                             ` <BLUPR02MB16836859F638150FF6330A0A81E40-Y8PPn9RqzNfZ9ihocuPUdanrV9Ap65cLvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-09-05  4:10                               ` Jason Gunthorpe
     [not found]                           ` <20160903051222.GA2098-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-04  5:54                             ` Leon Romanovsky
     [not found]                               ` <20160904055441.GI21847-2ukJVAZIZ/Y@public.gmane.org>
2016-09-04 23:55                                 ` Jason Gunthorpe
     [not found]                                   ` <20160904235555.GA21542-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-05 12:48                                     ` Leon Romanovsky
     [not found]                                       ` <20160905124802.GX21847-2ukJVAZIZ/Y@public.gmane.org>
2016-09-05 17:46                                         ` Jason Gunthorpe
     [not found]                                           ` <20160905174636.GC14403-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-14  4:04                                             ` Jason Gunthorpe
2016-09-04 21:47                     ` Doug Ledford
2016-09-01 19:49               ` Doug Ledford
     [not found]                 ` <3a266ff7-006f-3d27-9e07-9e2e3ba2d1f9-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-01 19:52                   ` Steve Wise
2016-09-01 20:21                     ` Jason Gunthorpe
     [not found]                       ` <20160901202110.GH20472-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-04 21:45                         ` Doug Ledford
2016-09-04  7:55               ` Sagi Grimberg
2016-09-04 15:07                 ` Bart Van Assche
2016-09-06 13:59   ` Hal Rosenstock
     [not found]     ` <bb889a58-331c-8ba8-920d-e3a79072dce4-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-06 16:37       ` Jason Gunthorpe
     [not found]         ` <20160906163708.GA3862-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-06 17:05           ` Hal Rosenstock
     [not found]             ` <a815efb1-424f-10a6-468e-d94f420a73be-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-06 18:15               ` Jason Gunthorpe
2016-09-13 16:28   ` Hefty, Sean
     [not found]     ` <1828884A29C6694DAF28B7E6B8A82373AB07FB7A-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-13 16:51       ` Hefty, Sean
     [not found]         ` <1828884A29C6694DAF28B7E6B8A82373AB07FBE1-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-13 18:03           ` Jason Gunthorpe
     [not found]             ` <20160913180342.GA6933-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-13 22:13               ` Hefty, Sean
     [not found]                 ` <1828884A29C6694DAF28B7E6B8A82373AB08075C-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-13 22:25                   ` Jason Gunthorpe
     [not found]                     ` <20160913222539.GB29095-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-13 23:00                       ` Hefty, Sean
     [not found]                         ` <1828884A29C6694DAF28B7E6B8A82373AB080798-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-16 15:12                           ` Doug Ledford
     [not found]                             ` <edc4c963-847a-e973-f1f1-ab9b78ad9d19-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-16 16:16                               ` Jason Gunthorpe
     [not found]                                 ` <20160916161626.GB2833-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-16 16:24                                   ` Hefty, Sean
     [not found]                                     ` <1828884A29C6694DAF28B7E6B8A82373AB08C5F3-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-16 16:55                                       ` Jason Gunthorpe
     [not found]                                         ` <20160916165500.GA15159-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-16 17:13                                           ` Hefty, Sean
2016-09-19 18:55                                       ` Jason Gunthorpe
     [not found]                                         ` <20160919185502.GA12436-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-19 18:58                                           ` Hefty, Sean
     [not found]                                             ` <1828884A29C6694DAF28B7E6B8A82373AB08D2CD-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-09-19 22:54                                               ` Jason Gunthorpe
2016-09-16 16:34                                   ` Doug Ledford
     [not found]                                     ` <de8022d4-debb-2366-48c9-fdd8e391eb4b-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-09-16 16:46                                       ` Hal Rosenstock
2016-09-16 16:56               ` Hal Rosenstock
     [not found]                 ` <9aaeb3e2-9283-9850-0dfa-d1ea150e7408-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-16 17:04                   ` Jason Gunthorpe
     [not found]                     ` <20160916170403.GB15159-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-16 18:08                       ` Doug Ledford
2016-09-13 18:06       ` Jason Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1471889618-1605-9-git-send-email-jgunthorpe@obsidianresearch.com \
    --to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
    --cc=Devesh.sharma-laKkSmNT4hbQT0dZR+AlfA@public.gmane.org \
    --cc=Tatyana.E.Nikolova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=monis-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org \
    --cc=vlad-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).