This patch series separates the mc_grp and mc_elem object pools from rxe_pools.c and moves their code to rxe_mcast.c. This makes sense because these two pools are different from the other pools as the only ones that do not share objects with rdma-core and that use key's instead of indices to enable looking up objects. This change will enable a significant simplification of the normal object pools. Note: the independent implementation takes references to multicast groups and also to pointers stored in the red-black trees holding the keys. The reference handling code is moved to be adjacent to the code that manages the pointers. This patch series applies cleanly to current for-next. commit e783362eb54cd99b2cac8b3a9aeac942e6f6ac07 (tag: v5.17-rc1, origin/wip/jgg-for-rc, origin/wip/jgg-for-next, origin/wip/for-testing, origin/for-rc, origin/for-next, origin/HEAD, for-next) Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> --- v10 Corrected issues reported by Jason Gunthorpe Isolated patches 01-17 separate from the remaining patches. They will be submitted later v9 Corrected issues reported by Jason Gunthorpe, Converted locking in rxe_mcast.c and rxe_pool.c to use RCU Split up the patches into smaller changes v8 Fixed an additional race in 3/8 which was not handled correctly. v7 Corrected issues reported by Jason Gunthorpe Link: https://lore.kernel.org/linux-rdma/20211207190947.GH6385@xxxxxxxxxx/ Link: https://lore.kernel.org/linux-rdma/20211207191857.GI6385@xxxxxxxxxx/ Link: https://lore.kernel.org/linux-rdma/20211207192824.GJ6385@xxxxxxxxxx/ v6 Fixed a kzalloc flags bug. Fixed comment bug reported by 'Kernel Test Robot'. Changed type of rxe_pool.c in __rxe_fini(). v5 Removed patches already accepted into for-next and addressed comments from Jason Gunthorpe. v4 Restructured patch series to change to xarray earlier which greatly simplified the changes. Rebased to current for-next v3 Changed rxe_alloc to use GFP_KERNEL Addressed other comments by Jason Gunthorp Merged the previous 06/10 and 07/10 patches into one since they overlapped Added some minor cleanups as 10/10 v2 Rebased to current for-next. Added 4 additional patches Bob Pearson (17): RDMA/rxe: Move rxe_mcast_add/delete to rxe_mcast.c RDMA/rxe: Move rxe_mcast_attach/detach to rxe_mcast.c RDMA/rxe: Rename rxe_mc_grp and rxe_mc_elem RDMA/rxe: Enforce IBA o10-2.2.3 RDMA/rxe: Remove rxe_drop_all_macst_groups RDMA/rxe: Remove qp->grp_lock and qp->grp_list RDMA/rxe: Use kzmalloc/kfree for mca RDMA/rxe: Rename grp to mcg and mce to mca RDMA/rxe: Introduce RXECB(skb) RDMA/rxe: Split rxe_rcv_mcast_pkt into two phases RDMA/rxe: Replace mcg locks by rxe->mcg_lock RDMA/rxe: Replace pool key by rxe->mcg_tree RDMA/rxe: Remove key'ed object support RDMA/rxe: Remove mcg from rxe pools RDMA/rxe: Add code to cleanup mcast memory RDMA/rxe: Add comments to rxe_mcast.c RDMA/rxe: Finish cleanup of rxe_mcast.c drivers/infiniband/sw/rxe/rxe.c | 21 +- drivers/infiniband/sw/rxe/rxe_hdr.h | 3 + drivers/infiniband/sw/rxe/rxe_loc.h | 28 +- drivers/infiniband/sw/rxe/rxe_mcast.c | 684 +++++++++++++++++++------- drivers/infiniband/sw/rxe/rxe_net.c | 18 - drivers/infiniband/sw/rxe/rxe_pool.c | 137 ------ drivers/infiniband/sw/rxe/rxe_pool.h | 40 -- drivers/infiniband/sw/rxe/rxe_qp.c | 19 +- drivers/infiniband/sw/rxe/rxe_recv.c | 104 ++-- drivers/infiniband/sw/rxe/rxe_verbs.c | 31 +- drivers/infiniband/sw/rxe/rxe_verbs.h | 25 +- 11 files changed, 614 insertions(+), 496 deletions(-) rewrite drivers/infiniband/sw/rxe/rxe_mcast.c (86%) -- 2.32.0