linux/drivers/infiniband/core
Jason Gunthorpe ca748c39ea RDMA/umem: Get rid of per_mm->notifier_count
This is intrinsically racy and the scheme is simply unnecessary. New MR
registration can wait for any on going invalidation to fully complete.

      CPU0                              CPU1
                                  if (atomic_read())
 if (atomic_dec_and_test() &&
     !list_empty())
  { /* not taken */ }
                                       list_add()

Putting the new UMEM into some kind of purgatory until another invalidate
rolls through..

Instead hold the read side of the umem_rwsem across the pair'd start/end
and get rid of the racy 'deferred add' approach.

Since all umem's in the rbt are always ready to go, also get rid of the
mn_counters_active stuff.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2018-09-21 11:58:36 -04:00
..
addr.c RDMA/core: Properly return the error code of rdma_set_src_addr_rcu 2018-09-19 10:12:44 -06:00
agent.c
agent.h
cache.c RDMA/core: Introduce rdma_read_gid_attr_ndev_rcu() to check GID attribute 2018-09-12 16:32:17 -06:00
cgroup.c
cm_msgs.h IB/cm: Remove unused and erroneous msg sequence encoding 2018-07-09 11:39:28 -06:00
cm.c IB/core: Introduce and use sgid_attr in CM requests 2018-07-26 09:47:47 -06:00
cma_configfs.c IB/cma: use strlcpy() instead of strncpy() 2018-01-15 15:33:21 -07:00
cma_priv.h RDMA/cma: Move rdma_cm_state to cma_priv.h 2018-03-29 13:54:21 -06:00
cma.c RDMA/core: Consider net ns of gid attribute for RoCE 2018-09-12 16:32:17 -06:00
core_priv.h RDMA/core: Consider net ns of gid attribute for RoCE 2018-09-12 16:32:17 -06:00
cq.c IB/core: Add an unbound WQ type to the new CQ API 2018-09-05 15:38:09 -06:00
device.c RDMA/core: Assign device ifindex before publishing the device 2018-09-06 14:34:38 -06:00
fmr_pool.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
iwcm.c
iwcm.h
iwpm_msg.c
iwpm_util.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
iwpm_util.h
mad_priv.h IB/mad: Use IDR for agent IDs 2018-06-18 11:22:54 -06:00
mad_rmpp.c
mad_rmpp.h
mad.c RDMA/core: Rate limit MAD error messages 2018-09-06 13:35:16 -06:00
Makefile IB/uverbs: Remove struct uverbs_root_spec and all supporting code 2018-08-13 09:17:19 -06:00
mr_pool.c
multicast.c IB: Make ib_init_ah_from_mcmember set sgid_attr 2018-06-25 14:19:56 -06:00
netlink.c
nldev.c RDMA/nldev: Return port capability flag for IB only 2018-06-18 11:09:05 -06:00
opa_smi.h
packer.c
rdma_core.c RDMA/ucontext: Get rid of the old disassociate flow 2018-09-20 16:19:30 -04:00
rdma_core.h RDMA/ucontext: Add a core API for mmaping driver IO memory 2018-09-20 16:19:30 -04:00
restrack.c RDMA/restrack: Change SPDX tag to properly reflect license 2018-06-05 14:04:20 -06:00
roce_gid_mgmt.c IB/core: Change filter function return type from int to bool 2018-08-15 13:33:20 -06:00
rw.c RDMA/core: Simplify ib_post_(send|recv|srq_recv)() calls 2018-07-24 16:06:36 -06:00
sa_query.c RDMA/core: Simplify roce_resolve_route_from_path() 2018-09-12 16:32:17 -06:00
sa.h
security.c IB/core: Use CONFIG_SECURITY_INFINIBAND to compile out security code 2018-05-01 11:16:36 -04:00
smi.c
smi.h
sysfs.c Merge branch 'uverbs_dev_cleanups' into rdma.git for-next 2018-09-05 16:21:22 -06:00
ucm.c IB/ucm: Fix compiling ucm.c 2018-08-13 20:04:37 -06:00
ucma.c RDMA/ucma: check fd type in ucma_migrate_id() 2018-09-04 15:07:55 -06:00
ud_header.c
umem_odp.c RDMA/umem: Get rid of per_mm->notifier_count 2018-09-21 11:58:36 -04:00
umem.c RDMA/umem: Get rid of struct ib_umem.odp_data 2018-09-21 11:54:46 -04:00
user_mad.c IB: Make ib_init_ah_attr_from_wc set sgid_attr 2018-06-25 14:19:56 -06:00
uverbs_cmd.c RDMA/umem: Use umem->owning_mm inside ODP 2018-09-21 11:58:36 -04:00
uverbs_ioctl.c IB/uverbs: Add IDRs array attribute type to ioctl() interface 2018-09-11 09:28:06 -06:00
uverbs_main.c RDMA/ucontext: Add a core API for mmaping driver IO memory 2018-09-20 16:19:30 -04:00
uverbs_marshall.c IB/cm: Replace members of sa_path_rec with 'struct sgid_attr *' 2018-06-25 14:19:57 -06:00
uverbs_std_types_counters.c IB/uverbs: Use uverbs_alloc for allocations 2018-08-13 09:16:13 -06:00
uverbs_std_types_cq.c IB/uverbs: Do not pass struct ib_device to the ioctl methods 2018-08-01 14:55:48 -06:00
uverbs_std_types_dm.c IB/uverbs: Do not pass struct ib_device to the ioctl methods 2018-08-01 14:55:48 -06:00
uverbs_std_types_flow_action.c RDMA/uverbs: Add generic function to fill in flow action object 2018-09-05 15:23:59 -06:00
uverbs_std_types_mr.c IB/uverbs: Do not pass struct ib_device to the ioctl methods 2018-08-01 14:55:48 -06:00
uverbs_std_types.c IB/uverbs: Remove the ib_uverbs_attr pointer from each attr 2018-08-10 16:06:24 -06:00
uverbs_uapi.c IB/uverbs: Add IDRs array attribute type to ioctl() interface 2018-09-11 09:28:06 -06:00
uverbs.h RDMA/ucontext: Add a core API for mmaping driver IO memory 2018-09-20 16:19:30 -04:00
verbs.c RDMA/core: Consider net ns of gid attribute for RoCE 2018-09-12 16:32:17 -06:00