From: Leon Romanovsky <leonro@xxxxxxxxxxxx> Changelog: v3->v4: * Changed lock/unlock to receive xarray to lock instead of ib_device * and restrack type. * Fixed spelling error in comment * Rebased on top of already accepted patches * Removed redundant xa_load check. * Squashed per-port/per-device separation patch v2->v3: * Rebased on to -rc4 * Removed special XA markings (RES_VISIBLE) * Dropped HW ID allocator for now. * Removed xa_is_err() check in *_byid() function * Reworded commit messages to reflect changes * Fixed compilation warning due to my changes to rdmavt v1->v2: * Dropped HW ID allocator for now. * Removed xa_is_err() check in *_byid() function * Reworded commit messages to reflect changes * Fixed compilation warning due to my changes to rdmavt v1->v2: * Added "Fortify .." atch, it helps to find uninitialized paths * Rewrote ".doit" patch v0->v1: * Don't set mark in case restrack entry failed to be added * Fix typos * Move kdoc comments from restrack.h to restrack.c * Rewrote user/kernel marking patch to drop xa_set_mark in favour of "user" field * Fixed two panics with uninitialized values, one for QPs and another for ibdev in CM_ID ----------------------------------------------------------------------------- This part converts internal restrack DB implementation from hash-based to be XArray-based. Such change is needed to allow access per specific index for .doit callbacks. In addition, such index will provide ability to bind/unbind counters to specific QPs, provide valuable debug information about parent object (e.g. PD of specific QP, or context of specific PD) and get list of objects connected to specific context. Thanks Leon Romanovsky (9): 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: Reduce scope of synchronization lock while updating DB RDMA/restrack: Hide restrack DB from IB/core RDMA/restrack: Prepare restrack_root to addition of extra fields per-type RDMA/restrack: Add restrack wrappers to get ID and type RDMA/nldev: Share with user-space object IDs RDMA/nldev: Provide parent IDs for PD, MR and QP objects drivers/infiniband/core/cma.c | 8 +- drivers/infiniband/core/core_priv.h | 2 +- drivers/infiniband/core/device.c | 5 +- drivers/infiniband/core/nldev.c | 282 ++++++++++++++---- drivers/infiniband/core/restrack.c | 243 ++++++++++++--- drivers/infiniband/core/uverbs_cmd.c | 8 +- drivers/infiniband/core/uverbs_std_types_cq.c | 2 +- drivers/infiniband/core/verbs.c | 6 +- drivers/infiniband/hw/cxgb4/restrack.c | 2 +- include/rdma/ib_verbs.h | 7 +- include/rdma/rdma_cm.h | 2 +- include/rdma/restrack.h | 58 ++-- include/uapi/rdma/rdma_netlink.h | 10 + 13 files changed, 483 insertions(+), 152 deletions(-) -- 2.19.1