From: Leon Romanovsky <leonro@xxxxxxxxxxxx> >From Jason, Restricting ODP to use only a single process and mm doesn't really make any sense, the data structure work to fix that is fairly straightforward and allows ODP to also stop using tgid as well. This series also cleans up a few things in the ODP code along the way to make it easier to make the datastructure change, and fixes a bunch of locking race conditions and other mistakes that syzkaller and lockdep finds in this code. Thanks Jason Gunthorpe (9): RDMA/umem: Use ib_umem_odp in all function signatures connected to ODP RDMA/umem: Make ib_umem_odp into a sub structure of ib_umem RDMA/umem: Get rid of struct ib_umem.odp_data RDMA/umem: Move all the ODP related stuff out of ucontext and into per_mm RDMA/umem: Use umem->owning_mm inside ODP RDMA/umem: Get rid of per_mm->notifier_count RDMA/umem: Handle a half-complete start/end sequence RDMA/umem: Avoid synchronize_srcu in the ODP MR destruction path RDMA/uverbs: Get rid of ucontext->tgid drivers/infiniband/core/rdma_core.c | 1 - drivers/infiniband/core/umem.c | 42 ++- drivers/infiniband/core/umem_odp.c | 615 ++++++++++++++++------------------- drivers/infiniband/core/uverbs_cmd.c | 11 +- drivers/infiniband/hw/mlx5/main.c | 7 + drivers/infiniband/hw/mlx5/mem.c | 9 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 +- drivers/infiniband/hw/mlx5/mr.c | 12 +- drivers/infiniband/hw/mlx5/odp.c | 123 +++---- include/rdma/ib_umem.h | 6 +- include/rdma/ib_umem_odp.h | 75 +++-- include/rdma/ib_verbs.h | 19 +- 12 files changed, 448 insertions(+), 474 deletions(-) -- 2.14.4