V7: Ported this patch series forward to the current state of for-next. MW now being allocated in core. Split up rxe_pool changes into patches as requested by Jason. Added some better comments. Added error returns via ERR_PTR for APIs that return pointers. Added some additional validation for rkeys in rxe_resp based on chapter 9 of IBA. Minor cleanup to rxe_mr which had duplicate entries. V6: Fixed two issues raised by Jason and Zhu. Undid the replacement of rwlocks by spinlocks in patch 10/12. On further reading it turns out rwlocks were the better choice. Missing prototype for rxe_invalidate_mr. This was caused by a regression in patch 05/12 which had dropped the actual use of the routine as well as the prototype. Fixed. V5: This patch series is a collection of API extensions for the rdma_rxe driver. With this patch set installed there are no errors in pyverbs run-tests and 31 tests are skipped down from 56. The remaining skipped test cases include - XRC tests - ODP tests - Parent device tests - Import tests - Device memory - MLX5 specific tests - EFA tests It continues from the previous (v4) set which implemented memory windows and has had a number of individual patches picked up in for-next. This set (v5) includes: Ported to current head of tree Memory windows patches not yet picked up kernel support for the extended user space APIs: - ibv_query_device_ex - ibv_create_cq_ex - ibv_create_qp_ex Fixes for multicast which is not currently working This patch set depends on a matching rdma-core user space library patch set. In order to run correctly it is necessary to configure by hand the EUI64 link local IPV6 address on systems which use a random link local address (like Ubuntu). Bob Pearson (19): rdma_rxe: Separat MEM into MR and MW objects. rdma_rxe: Enable MW objects rdma_rxe: Let pools support both keys and indices rdma_rxe: make pool return values position independent rdma_rxe: remove void * parameters in pool APIs rdma_rxe: add alloc_mw and dealloc_mw verbs rdma_rxe: Add bind_mw and invalidate_mw verbs rdma_rxe: Add memory access through MWs rdma_rxe: Add locked and unlocked pool APIs rdma_rxe: Add support for ibv_query_device_ex rdma_rxe: Add support for extended CQ operations rdma_rxe: Add support for extended QP operations rdma_rxe: Fix mcast group allocation bug rdma_rxe: Fix bugs in the multicast receive path rdma_rxe: handle ERR_PTR returns from pool rdma_rxe: remove duplicate entries in struct rxe_mr rdma_rme: removed unused RXE_MR_TYPE_FMR rdma_rxe: add rkey validation checks for MR and MW rdma_rxe: moved rxe_xmit_packet to rxe_net.c drivers/infiniband/sw/rxe/Makefile | 1 + drivers/infiniband/sw/rxe/rxe.c | 100 ++-- drivers/infiniband/sw/rxe/rxe_comp.c | 12 +- drivers/infiniband/sw/rxe/rxe_loc.h | 91 ++-- drivers/infiniband/sw/rxe/rxe_mcast.c | 118 +++-- drivers/infiniband/sw/rxe/rxe_mr.c | 396 ++++++++------- drivers/infiniband/sw/rxe/rxe_mw.c | 420 ++++++++++++++++ drivers/infiniband/sw/rxe/rxe_net.c | 47 +- drivers/infiniband/sw/rxe/rxe_opcode.c | 11 +- drivers/infiniband/sw/rxe/rxe_opcode.h | 1 - drivers/infiniband/sw/rxe/rxe_param.h | 10 +- drivers/infiniband/sw/rxe/rxe_pool.c | 653 ++++++++++++++++++------- drivers/infiniband/sw/rxe/rxe_pool.h | 148 +++--- drivers/infiniband/sw/rxe/rxe_recv.c | 67 ++- drivers/infiniband/sw/rxe/rxe_req.c | 145 ++++-- drivers/infiniband/sw/rxe/rxe_resp.c | 188 +++++-- drivers/infiniband/sw/rxe/rxe_verbs.c | 118 +++-- drivers/infiniband/sw/rxe/rxe_verbs.h | 71 ++- include/uapi/rdma/rdma_user_rxe.h | 68 ++- 19 files changed, 1930 insertions(+), 735 deletions(-) create mode 100644 drivers/infiniband/sw/rxe/rxe_mw.c -- 2.25.1