On Wed, Jan 30, 2019 at 12:48:52PM +0200, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > Hi, > > In order to remove ambiguity on the order of series, I combined three > series into one, which does from the beginning (nldev and restrack > refactoring through IDs exposure upto initial object cleanup). > > No change to userspace posted earlier. > > Thanks > Changelog: > 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: > * 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 > > 1. Refactoring and ID exposure parts: > 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. > 2. PD cleanup: > In this part, I converted all drivers to use IB/core ib_pd allocation > to ensure that ib_device pointer is valid. > 3. Parent ID exposure: > This small part exposes IDs and parent IDs to use to query specific objects. > An example of how it can be extended to support multiple contexts for PD > was posted to the ML in previous discussions. > > Thanks > > Leon Romanovsky (19): > RDMA/nldev: Dynamically generate restrack dumpit callbacks > RDMA/nldev: Refactor out PID namespace check > RDMA/nldev: Prepare CAP_NET_ADMIN checks for .doit callbacks > RDMA/core: Simplify restrack interface > RDMA/core: Use ops infrastructure to keep all callbacks in one place > RDMA/restrack: Refactor user/kernel restrack additions > RDMA: Provide safe ib_alloc_device() function I applied these cleanup patches to for-next > 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: 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 > RDMA/core: Share driver structure size with core > RDMA: Handle PD allocations by IB/core These need resending, the PD allocation change should remain as a different series.. Also, is there some easy way to fix things with the LPQN in this series so QP can be ready as well? Jason