• Jason Gunthorpe's avatar
    RDMA/mlx5: Consolidate MR destruction to mlx5_ib_dereg_mr() · e6fb246c
    Jason Gunthorpe authored
    Now that the SRCU stuff has been removed the entire MR destroy logic can
    be made a lot simpler. Currently there are many different ways to destroy a
    MR and it makes it really hard to do this task correctly. Route all
    destruction through mlx5_ib_dereg_mr() and make it work for all
    situations.
    
    Since it turns out all the different MR types do basically the same thing
    this removes a lot of knowledge of MR internals from ODP and leaves ODP
    just exporting an operation to clean up children.
    
    This fixes a few weird corner cases bugs and firmly uses the correct
    ordering of the MR destruction:
     - Stop parallel access to the mkey via the ODP xarray
     - Stop DMA
     - Release the umem
     - Clean up ODP children
     - Free/Recycle the MR
    
    Link: https://lore.kernel.org/r/20210304120745.1090751-4-leon@kernel.orgSigned-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    e6fb246c
mr.c 69.4 KB