From: Leon Romanovsky <leonro@xxxxxxxxxxxx> Changelog: v2->v3: * Added type casting in a return of zalloc * Restore deleted rxe PD pool management to ensure that max_pd is honored. v1->v2: * Sent as part of per-ID series v0->v1: * Used various to_XXXpd() macros provided by drivers instead of * container_of() - Shiraz * Cleaned a little bit macros after Jason's suggestion and Bart's snippet from other patch. ---------------------------------------------------------------- Hi, This series is a followup to discussed on the mailing list approach to provide drivers common infrastructure for SW/HW allocated IDs. Those IDs are essential part of two main core features: 1. netlink interface to query specific objects from user space (rdmatool) 2. internal resource management, instead of home grown bitmaps and trees used by various drivers. However for mentioned infrastructure to work, it relies on the fact that the pointer to ib_device is already set, prior to call to various alloc_XXX() functions. In this series, I converted all drivers to use IB/core ib_pd allocation to ensure that ib_device pointer is valid. Thanks Leon Romanovsky (2): RDMA/core: Share driver structure size with core RDMA: Handle PD allocations by IB/core drivers/infiniband/core/device.c | 5 + drivers/infiniband/core/uverbs_cmd.c | 15 ++- drivers/infiniband/core/uverbs_std_types.c | 2 +- drivers/infiniband/core/verbs.c | 27 +++--- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 37 +++----- drivers/infiniband/hw/bnxt_re/ib_verbs.h | 9 +- drivers/infiniband/hw/bnxt_re/main.c | 1 + drivers/infiniband/hw/cxgb3/iwch_provider.c | 25 ++--- drivers/infiniband/hw/cxgb4/provider.c | 25 ++--- drivers/infiniband/hw/hns/hns_roce_device.h | 7 +- drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 27 +++--- drivers/infiniband/hw/hns/hns_roce_main.c | 1 + drivers/infiniband/hw/hns/hns_roce_pd.c | 25 ++--- drivers/infiniband/hw/i40iw/i40iw_utils.c | 1 - drivers/infiniband/hw/i40iw/i40iw_verbs.c | 32 +++---- drivers/infiniband/hw/mlx4/main.c | 36 +++----- drivers/infiniband/hw/mlx5/main.c | 48 +++++----- drivers/infiniband/hw/mthca/mthca_provider.c | 29 ++---- drivers/infiniband/hw/nes/nes_verbs.c | 32 +++---- drivers/infiniband/hw/ocrdma/ocrdma_main.c | 1 + drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 92 ++++++++----------- drivers/infiniband/hw/ocrdma/ocrdma_verbs.h | 6 +- drivers/infiniband/hw/qedr/main.c | 1 + drivers/infiniband/hw/qedr/verbs.c | 34 ++----- drivers/infiniband/hw/qedr/verbs.h | 6 +- drivers/infiniband/hw/usnic/usnic_ib_main.c | 1 + drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 26 ++---- drivers/infiniband/hw/usnic/usnic_ib_verbs.h | 7 +- .../infiniband/hw/vmw_pvrdma/pvrdma_main.c | 1 + .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.c | 43 +++------ .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 7 +- drivers/infiniband/sw/rdmavt/pd.c | 29 ++---- drivers/infiniband/sw/rdmavt/pd.h | 7 +- drivers/infiniband/sw/rdmavt/vt.c | 1 + drivers/infiniband/sw/rxe/rxe_pool.c | 60 +++++++++--- drivers/infiniband/sw/rxe/rxe_pool.h | 4 + drivers/infiniband/sw/rxe/rxe_verbs.c | 16 ++-- drivers/infiniband/sw/rxe/rxe_verbs.h | 2 +- include/rdma/ib_verbs.h | 22 ++++- 39 files changed, 341 insertions(+), 409 deletions(-) -- 2.19.1