diff options
| author | Jacob Moroni <jmoroni@google.com> | 2026-07-28 14:15:01 +0000 |
|---|---|---|
| committer | Leon Romanovsky <leon@kernel.org> | 2026-08-05 10:35:36 -0400 |
| commit | d24ce259185e76be64ac9a895057371be548cd39 (patch) | |
| tree | ed448737d5e352b9caacf80a2c20ecc0dbcad09e /drivers/infiniband | |
| parent | 09d09e5d79f3174bc082fcea85743a6ce4b69016 (diff) | |
| download | linux-next-d24ce259185e76be64ac9a895057371be548cd39.tar.gz linux-next-d24ce259185e76be64ac9a895057371be548cd39.zip | |
RDMA/irdma: Remove dmabuf checks in rereg_mr
Now that ib_umem_check_rereg entirely blocks rereg for dmabuf
umems, the extra logic can be removed from irdma.
Signed-off-by: Jacob Moroni <jmoroni@google.com>
Link: https://patch.msgid.link/20260728141501.1425737-2-jmoroni@google.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'drivers/infiniband')
| -rw-r--r-- | drivers/infiniband/hw/irdma/verbs.c | 31 |
1 files changed, 1 insertions, 30 deletions
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c index 16c80367270f..5e03cf39fa6e 100644 --- a/drivers/infiniband/hw/irdma/verbs.c +++ b/drivers/infiniband/hw/irdma/verbs.c @@ -3885,8 +3885,6 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags, struct irdma_device *iwdev = to_iwdev(ib_mr->device); struct irdma_mr *iwmr = to_iwmr(ib_mr); struct irdma_pbl *iwpbl = &iwmr->iwpbl; - bool dmabuf_revocable = iwmr->region && iwmr->region->is_dmabuf; - struct ib_umem_dmabuf *umem_dmabuf; int ret; ret = ib_no_udata_io(udata); @@ -3903,26 +3901,9 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags, if (ret) return ERR_PTR(ret); - if (dmabuf_revocable) { - umem_dmabuf = to_ib_umem_dmabuf(iwmr->region); - - ib_umem_dmabuf_revoke_lock(umem_dmabuf); - - /* If the dmabuf has been revoked, it means that the region has - * been invalidated in HW. We must not allow it to become valid - * again unless the user is requesting a change in translation - * which will end up dropping the umem dmabuf and allocating an - * entirely new umem anyway. - */ - if (umem_dmabuf->revoked && !(flags & IB_MR_REREG_TRANS)) { - ret = -EINVAL; - goto err_unlock; - } - } - ret = irdma_hwdereg_mr(ib_mr); if (ret) - goto err_unlock; + return ERR_PTR(ret); if (flags & IB_MR_REREG_ACCESS) iwmr->access = new_access; @@ -3939,12 +3920,6 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags, iwpbl->pbl_allocated = false; } - if (dmabuf_revocable) { - /* Must unlock before release to prevent deadlock */ - ib_umem_dmabuf_revoke_unlock(umem_dmabuf); - dmabuf_revocable = false; - } - if (iwmr->region) { ib_umem_release(iwmr->region); iwmr->region = NULL; @@ -3955,10 +3930,6 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags, ret = irdma_hwreg_mr(iwdev, iwmr, iwmr->access); } -err_unlock: - if (dmabuf_revocable) - ib_umem_dmabuf_revoke_unlock(umem_dmabuf); - return ret ? ERR_PTR(ret) : NULL; } |
