This is the user space counter-part of the kernel patch set to add dma-buf support to the RDMA subsystem. This is the second version of the patch series. Most of the issues found so far in v1 are addressed except for the use of /dev/dri/card* and dumb_buf for allocating dma-buf object. The current implementation at least provides a testing setup that works for most GPUs. Alternatives are being investigated. Change log: v2: * Put the kernel header updates into a separate commit * Add comments for the data structure used in python ioctl calls * Fix issues related to symbol versioning * Fix styling issues: extra spaces, unncecessary variable, typo * Fix an inproper error code usage * Put the new op into ibv_context_ops instead if verbs_context v1: https://www.spinics.net/lists/linux-rdma/msg97865.html * Add user space API for registering dma-buf based memory regions * Update pyverbs with the new API * Add new tests This series consists of six patches. The first patch updates the kernel headers for dma-buf support. Patch 2 adds the new API function and updates the man pages. Patch 3 implements the new API in the mlx5 provider. Patch 3 adds new class definitions to pyverbs for the new API. Patch 4 adds a set of new tests for the new API. Patch 5 fixes bug in the utility code of the tests. Pull request at github: https://github.com/linux-rdma/rdma-core/pull/895 Jianxin Xiong (6): Update kernel headers verbs: Support dma-buf based memory region mlx5: Support dma-buf based memory region pyverbs: Add dma-buf based MR support tests: Add tests for dma-buf based memory regions tests: Bug fix for get_access_flags() debian/libibverbs1.symbols | 2 + kernel-headers/rdma/ib_user_ioctl_cmds.h | 14 ++++ kernel-headers/rdma/ib_user_verbs.h | 14 ---- libibverbs/CMakeLists.txt | 2 +- libibverbs/cmd_mr.c | 38 +++++++++ libibverbs/driver.h | 7 ++ libibverbs/dummy_ops.c | 11 +++ libibverbs/libibverbs.map.in | 6 ++ libibverbs/man/ibv_reg_mr.3 | 21 ++++- libibverbs/verbs.c | 17 ++++ libibverbs/verbs.h | 11 +++ providers/mlx5/mlx5.c | 2 + providers/mlx5/mlx5.h | 3 + providers/mlx5/verbs.c | 22 ++++++ pyverbs/CMakeLists.txt | 2 + pyverbs/dmabuf.pxd | 13 ++++ pyverbs/dmabuf.pyx | 85 ++++++++++++++++++++ pyverbs/libibverbs.pxd | 2 + pyverbs/mr.pxd | 5 ++ pyverbs/mr.pyx | 77 +++++++++++++++++- tests/test_mr.py | 130 ++++++++++++++++++++++++++++++- tests/utils.py | 29 ++++++- 22 files changed, 491 insertions(+), 22 deletions(-) create mode 100644 pyverbs/dmabuf.pxd create mode 100644 pyverbs/dmabuf.pyx -- 1.8.3.1