alistair23-linux/include/rdma
Jason Gunthorpe 921eab1143 RDMA/devices: Re-organize device.c locking
The locking here started out with a single lock that covered everything
and then has lately veered into crazy town.

The fundamental problem is that several places need to iterate over a
linked list, but also need to drop their locks to avoid deadlock during
client callbacks.

xarray's restartable iteration offers a simple solution to the
problem. Once all the lists are xarrays we can drop locks in the places
that need that and rely on xarray to provide consistency and locking for
the data structure.

The resulting simplification is that each of the three lists has a
dedicated rwsem that must be held when working with the list it
covers. One data structure is no longer covered by multiple locks.

The sleeping semaphore is selected because the read side generally needs
to be held over something sleeping, and using RCU reader locking in those
cases is overkill.

In the process this simplifies the entire registration/unregistration flow
to be the expected list of setups and the reversed list of matching
teardowns, and the registration lock 'refcount' can now be revised to be
released after the ULPs are removed, providing a very sane semantic for
this feature.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2019-02-08 16:56:45 -07:00
..
ib.h RDMA/core: Return bool instead of int 2018-07-30 20:49:04 -06:00
ib_addr.h RDMA/core: Annotate timeout as unsigned long 2018-10-16 13:34:01 -04:00
ib_cache.h RDMA/smc: Replace ib_query_gid with rdma_get_gid_attr 2018-08-17 16:45:51 -06:00
ib_cm.h RDMA/core: Annotate timeout as unsigned long 2018-10-16 13:34:01 -04:00
ib_fmr_pool.h IB/core: Make function ib_fmr_pool_unmap return void 2018-11-21 16:13:02 -07:00
ib_hdrs.h IB/hfi1: Remove unnecessary fecn and becn fields 2018-02-01 15:43:29 -07:00
ib_mad.h IB/core: Don't register each MAD agent for LSM notifier 2019-02-08 16:24:44 -07:00
ib_marshall.h
ib_pack.h IB/core: Fix calculation of maximum RoCE MTU 2017-10-18 12:11:36 -04:00
ib_pma.h
ib_sa.h RDMA/core: Annotate timeout as unsigned long 2018-10-16 13:34:01 -04:00
ib_smi.h
ib_umem.h IB/{core,hw}: Have ib_umem_get extract the ib_ucontext from ib_udata 2019-01-10 17:07:45 -07:00
ib_umem_odp.h IB/mlx5: Remove dead code 2019-01-24 09:22:30 -07:00
ib_verbs.h RDMA/devices: Re-organize device.c locking 2019-02-08 16:56:45 -07:00
iw_cm.h RDMA/iwcm: add tos_set bool to iw_cm struct 2019-02-08 16:18:06 -07:00
iw_portmap.h RDMA/iwpm: move kdoc comments to functions 2019-02-05 15:40:41 -07:00
mr_pool.h
opa_addr.h include/rdma/opa_addr.h: Fix an endianness issue 2018-07-03 14:11:34 -06:00
opa_port_info.h
opa_smi.h
opa_vnic.h
rdma_cm.h IB/cma: Define option to set ack timeout and pack tos_set 2019-02-08 16:14:21 -07:00
rdma_cm_ib.h RDMA/{cma, ucma}: Simplify and rename rdma_set_ib_paths 2018-01-10 22:00:33 -07:00
rdma_netlink.h RDMA/netlink: Simplify netlink listener existence check 2018-10-03 16:06:07 -06:00
rdma_vt.h RDMA: Rename port_callback to init_port 2019-01-14 13:05:14 -07:00
rdmavt_cq.h IB/{hfi1, rdmavt, qib}: Implement CQ completion vector support 2018-05-09 15:53:30 -04:00
rdmavt_mr.h
rdmavt_qp.h IB/{hfi1, qib, rdmavt}: Move ruc_loopback to rdmavt 2018-10-03 16:38:28 -06:00
restrack.h RDMA/core: Use the ops infrastructure to keep all callbacks in one place 2019-01-30 21:34:21 -07:00
rw.h rdma core: Add rdma_rw_mr_payload() 2017-09-05 15:15:30 -04:00
uverbs_ioctl.h IB/core: uverbs copy to struct or zero helper 2018-12-20 15:18:18 -07:00
uverbs_named_ioctl.h RDMA/uverbs: Fix typo in string concatenation macro 2018-12-06 21:11:06 -07:00
uverbs_std_types.h IB/core: Enable getting an object type from a given uobject 2018-12-04 13:46:41 -05:00
uverbs_types.h IB/mlx5: Introduce MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD 2019-01-29 13:32:43 -07:00