This patch series replaces the page map carried in each memory region with a struct xarray. It is based on a sketch developed by Jason Gunthorpe. The first five patches are preparation that tries to cleanly isolate all the mr specific code into rxe_mr.c. The sixth patch is the actual change. v7: Link: https://lore.kernel.org/linux-rdma/Y8f53jdDAN0B9qy7@xxxxxxxxxx/ Made changes requested by Jason to return RESPST_ERR_XXX from rxe_mr.c to rxe_resp.c. v6: Backed out. v5: Responded to a note from lizhijian@xxxxxxxxxxx and restored calls to is_pmem_page() which were accidentally dropped in earlier versions. v4: Responded to a comment by Zhu and cleaned up error passing between rxe_mr.c and rxe_resp.c. Other various cleanups including more careful use of unsigned ints. Rebased to current for-next. v3: Fixed an error reported by kernel test robot v2: Rebased to 6.2.0-rc1+ Minor cleanups Fixed error reported by Jason in 4/6 missing if after else. Bob Pearson (6): RDMA/rxe: Cleanup mr_check_range RDMA/rxe: Move rxe_map_mr_sg to rxe_mr.c RDMA-rxe: Isolate mr code from atomic_reply() RDMA-rxe: Isolate mr code from atomic_write_reply() RDMA/rxe: Cleanup page variables in rxe_mr.c RDMA/rxe: Replace rxe_map and rxe_phys_buf by xarray drivers/infiniband/sw/rxe/rxe.h | 38 ++ drivers/infiniband/sw/rxe/rxe_loc.h | 12 +- drivers/infiniband/sw/rxe/rxe_mr.c | 605 ++++++++++++++------------ drivers/infiniband/sw/rxe/rxe_resp.c | 143 ++---- drivers/infiniband/sw/rxe/rxe_verbs.c | 36 -- drivers/infiniband/sw/rxe/rxe_verbs.h | 32 +- 6 files changed, 425 insertions(+), 441 deletions(-) base-commit: 1ec82317a1daac78c04b0c15af89018ccf9fa2b7 -- 2.37.2