From: Leon Romanovsky <leonro@xxxxxxxxxxxx> This is WIP RFC, not reviewed, partially tested, without performance impact of replacing hash to xarray in creation/destroy of multiple PD/MRs, doesn't include all drivers. It is NOT ready to be merged. While I'm updating other drivers to export their PD numbers, I would like to gather feedback as early as possible on the approach and raise the question: "should RDMA/core provide PD numbers for drivers which generate them in SW (e.g. hns, bnxt_re, i40iw, e.t.c)?" Thanks Leon Romanovsky (11): RDMA/nldev: Dynamically generate restrack dumpit callbacks RDMA/nldev: Export unique identifier for PD objects RDMA/verbs: Add unique PD object identifier RDMA/mlx5: Store PDN in general ib_pd RDMA/nldev: Refactor out PID namespace check RDMA/nldev: Prepare CAP_NET_ADMIN checks for .doit callbacks RDMA/nldev: Prepare code for per-port/per-device separation RDMA/restrack: Convert internal DB from hash to XArray RDMA/restrack: Translate from ID to restrack object RDMA/nldev: Add resource tracker doit callback RDMA/restrack: Drop synchronization lock while updating DB drivers/infiniband/core/nldev.c | 216 ++++++++++++++++++--------- drivers/infiniband/core/restrack.c | 116 +++++++++----- drivers/infiniband/hw/mlx5/main.c | 8 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 1 - drivers/infiniband/hw/mlx5/mr.c | 16 +- drivers/infiniband/hw/mlx5/qp.c | 12 +- drivers/infiniband/hw/mlx5/srq.c | 2 +- include/rdma/ib_verbs.h | 6 + include/rdma/restrack.h | 30 ++-- include/uapi/rdma/rdma_netlink.h | 4 + 10 files changed, 277 insertions(+), 134 deletions(-) -- 2.19.1