linux/include/rdma
Jason Gunthorpe 6e0954b11c RDMA/uverbs: Allow drivers to create a new HW object during rereg_mr
mlx5 has an ugly flow where it tries to allocate a new MR and replace the
existing MR in the same memory during rereg. This is very complicated and
buggy. Instead of trying to replace in-place inside the driver, provide
support from uverbs to change the entire HW object assigned to a handle
during rereg_mr.

Since destroying a MR is allowed to fail (ie if a MW is pointing at it)
and can't be detected in advance, the algorithm creates a completely new
uobject to hold the new MR and swaps the IDR entries of the two objects.

The old MR in the temporary IDR entry is destroyed, and if it fails
rereg_mr succeeds and destruction is deferred to FD release. This
complexity is why this cannot live in a driver safely.

Link: https://lore.kernel.org/r/20201130075839.278575-4-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2020-12-07 14:06:23 -04:00
..
ib.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_addr.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_cache.h RDMA/core: Introduce new GID table query API 2020-10-01 21:20:11 -03:00
ib_cm.h RDMA/cm: Remove unused cm_class 2020-08-18 15:43:07 -03:00
ib_hdrs.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_mad.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_marshall.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_pack.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_pma.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_sa.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_smi.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
ib_umem.h RDMA/mlx5: Use ib_umem_find_best_pgoff() for SRQ 2020-11-16 16:53:29 -04:00
ib_umem_odp.h IB/core: Enable ODP sync without faulting 2020-10-01 16:44:05 -03:00
ib_verbs.h RDMA/uverbs: Allow drivers to create a new HW object during rereg_mr 2020-12-07 14:06:23 -04:00
iba.h RDMA/cm: Add SET/GET implementations to hide IBA wire format 2020-01-25 15:05:59 -04:00
ibta_vol1_c12.h RDMA/cm: Add Enhanced Connection Establishment (ECE) bits 2020-05-27 16:05:05 -03:00
iw_cm.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
iw_portmap.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
lag.h RDMA/core: Add LAG functionality 2020-05-02 20:19:54 -03:00
mr_pool.h Linux 5.2-rc6 2019-06-28 21:18:23 -03:00
opa_addr.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
opa_port_info.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
opa_smi.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
opa_vnic.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
rdma_cm.h RDMA: Add rdma_connect_locked() 2020-10-28 09:14:49 -03:00
rdma_cm_ib.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
rdma_counter.h RDMA/core: Make rdma_counter.h compile stand alone 2019-07-09 09:44:47 -03:00
rdma_netlink.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
rdma_vt.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
rdmavt_cq.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
rdmavt_mr.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
rdmavt_qp.h RDMA 5.9 merge window pull request 2020-08-06 16:43:36 -07:00
restrack.h RDMA/core: Allow drivers to disable restrack DB 2020-11-27 11:38:46 -04:00
rw.h Linux 5.2-rc6 2019-06-28 21:18:23 -03:00
signature.h RDMA: Make most headers compile stand alone 2019-07-25 13:58:47 -03:00
tid_rdma_defs.h IB/hfi1: Build TID RDMA WRITE request 2019-02-05 18:07:43 -05:00
uverbs_ioctl.h IB/verbs: avoid nested container_of() 2020-10-28 10:06:51 -03:00
uverbs_named_ioctl.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
uverbs_std_types.h RDMA/include: Replace license text with SPDX tags 2020-07-29 14:48:36 -03:00
uverbs_types.h RDMA/uverbs: Allow drivers to create a new HW object during rereg_mr 2020-12-07 14:06:23 -04:00