linux-stable/drivers/infiniband/core
Manjunath Patil baf8a6d2cd RDMA/cm: add timeout to cm_destroy_id wait
[ Upstream commit 96d9cbe2f2 ]

Add timeout to cm_destroy_id, so that userspace can trigger any data
collection that would help in analyzing the cause of delay in destroying
the cm_id.

New noinline function helps dtrace/ebpf programs to hook on to it.
Existing functionality isn't changed except triggering a probe-able new
function at every timeout interval.

We have seen cases where CM messages stuck with MAD layer (either due to
software bug or faulty HCA), leading to cm_id getting stuck in the
following call stack. This patch helps in resolving such issues faster.

kernel: ... INFO: task XXXX:56778 blocked for more than 120 seconds.
...
	Call Trace:
	__schedule+0x2bc/0x895
	schedule+0x36/0x7c
	schedule_timeout+0x1f6/0x31f
 	? __slab_free+0x19c/0x2ba
	wait_for_completion+0x12b/0x18a
	? wake_up_q+0x80/0x73
	cm_destroy_id+0x345/0x610 [ib_cm]
	ib_destroy_cm_id+0x10/0x20 [ib_cm]
	rdma_destroy_id+0xa8/0x300 [rdma_cm]
	ucma_destroy_id+0x13e/0x190 [rdma_ucm]
	ucma_write+0xe0/0x160 [rdma_ucm]
	__vfs_write+0x3a/0x16d
	vfs_write+0xb2/0x1a1
	? syscall_trace_enter+0x1ce/0x2b8
	SyS_write+0x5c/0xd3
	do_syscall_64+0x79/0x1b9
	entry_SYSCALL_64_after_hwframe+0x16d/0x0

Signed-off-by: Manjunath Patil <manjunath.b.patil@oracle.com>
Link: https://lore.kernel.org/r/20240309063323.458102-1-manjunath.b.patil@oracle.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-04-13 13:01:45 +02:00
..
addr.c
agent.c
agent.h
cache.c
cgroup.c
cm.c RDMA/cm: add timeout to cm_destroy_id wait 2024-04-13 13:01:45 +02:00
cm_msgs.h
cm_trace.c
cm_trace.h trace: Relocate event helper files 2024-04-10 16:19:24 +02:00
cma.c RDMA/cma: Initialize ib_sa_multicast structure to 0 when join 2023-10-10 21:59:09 +02:00
cma_configfs.c RDMA/cma: Fix truncation compilation warning in make_cma_ports 2023-10-10 21:59:09 +02:00
cma_priv.h
cma_trace.c
cma_trace.h trace: Relocate event helper files 2024-04-10 16:19:24 +02:00
core_priv.h
counters.c
cq.c
device.c RDMA/device: Fix a race between mad_client and cm_client init 2024-03-26 18:21:33 -04:00
ib_core_uverbs.c
iwcm.c
iwcm.h
iwpm_msg.c
iwpm_util.c
iwpm_util.h
lag.c
mad.c IB/mad: Don't call to function that might sleep while in atomic context 2022-12-31 13:14:23 +01:00
mad_priv.h
mad_rmpp.c
mad_rmpp.h
Makefile
mr_pool.c
multicast.c
netlink.c
nldev.c RDMA/core: Require admin capabilities to set system parameters 2023-10-10 21:59:08 +02:00
opa_smi.h
packer.c
rdma_core.c
rdma_core.h
restrack.c RDMA/restrack: Release MR restrack when delete 2022-12-31 13:14:23 +01:00
restrack.h
roce_gid_mgmt.c
rw.c
sa.h
sa_query.c RDMA/core: Use size_{add,sub,mul}() in calls to struct_size() 2023-11-20 11:08:22 +01:00
security.c
smi.c
smi.h
sysfs.c RDMA/core: Use size_{add,sub,mul}() in calls to struct_size() 2023-11-20 11:08:22 +01:00
trace.c
ucma.c
ud_header.c
umem.c RDMA/core: Fix umem iterator when PAGE_SIZE is greater then HCA pgsz 2023-12-13 18:36:40 +01:00
umem_dmabuf.c
umem_odp.c IB/core: Fix a nested dead lock as part of ODP flow 2022-09-15 11:30:06 +02:00
user_mad.c RDMA/core: Use size_{add,sub,mul}() in calls to struct_size() 2023-11-20 11:08:22 +01:00
uverbs.h
uverbs_cmd.c RDMA/uverbs: Restrict usage of privileged QKEYs 2023-06-21 15:59:15 +02:00
uverbs_ioctl.c
uverbs_main.c RDMA/uverbs: Fix typo of sizeof argument 2023-10-10 21:59:09 +02:00
uverbs_marshall.c
uverbs_std_types.c
uverbs_std_types_async_fd.c
uverbs_std_types_counters.c IB/uverbs: Fix an potential error pointer dereference 2023-09-19 12:22:46 +02:00
uverbs_std_types_cq.c
uverbs_std_types_device.c
uverbs_std_types_dm.c
uverbs_std_types_flow_action.c
uverbs_std_types_mr.c
uverbs_std_types_qp.c
uverbs_std_types_srq.c
uverbs_std_types_wq.c
uverbs_uapi.c
verbs.c RDMA/core: Fix GID entry ref leak when create_ah fails 2023-04-20 12:13:53 +02:00