linux/drivers/infiniband/core
Venkata Sandeep Dhanalakota af808ece5c IB/SA: Check dlid before SA agent queries for ClassPortInfo
SA queries SM for class port info when there is a LID_CHANGE event.

When a base lid is configured before fm is started ie when smlid is
not yet assigned, SA handles the LID_CHANGE event and tries query SM
with lid 0. This will cause an hang.

[ 1106.958820] INFO: task kworker/2:0:23 blocked for more than 120 seconds.
[ 1106.965082] Tainted: G O 4.12.0+ #1
[ 1106.969602] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables
 this message.
[ 1106.977227] kworker/2:0 D 0 23 2 0x00000000
[ 1106.977250] Workqueue: infiniband update_ib_cpi [ib_core]
[ 1106.977261] Call Trace:
[ 1106.977273] __schedule+0x28e/0x860
[ 1106.977285] schedule+0x36/0x80
[ 1106.977298] schedule_timeout+0x1a3/0x2e0
[ 1106.977310] ? radix_tree_iter_tag_clear+0x1b/0x20
[ 1106.977322] ? idr_alloc+0x64/0x90
[ 1106.977334] wait_for_completion+0xe3/0x140
[ 1106.977347] ? wake_up_q+0x80/0x80
[ 1106.977369] update_ib_cpi+0x163/0x210 [ib_core]
[ 1106.977381] process_one_work+0x147/0x370
[ 1106.977394] worker_thread+0x4a/0x390
[ 1106.977406] kthread+0x109/0x140
[ 1106.977418] ? process_one_work+0x370/0x370
[ 1106.977430] ? kthread_park+0x60/0x60
[ 1106.977443] ret_from_fork+0x22/0x30

Always ensure a proper smlid is assigned before querying SM for cpi.

Fixes: ee1c60b1bf ("IB/SA: Modify SA to implicitly cache Class Port info")
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Venkata Sandeep Dhanalakota <venkata.s.dhanalakota@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2017-12-22 13:33:30 -07:00
..
addr.c RDMA/core: Avoid copying ifindex twice 2017-12-18 15:37:10 -07:00
agent.c IB/core: Rename ib_destroy_ah to rdma_destroy_ah 2017-05-01 14:32:43 -04:00
agent.h
cache.c IB/core: Avoid exporting module internal ib_find_gid_by_filter() 2017-12-18 15:37:09 -07:00
cgroup.c IB/core: added support to use rdma cgroup controller 2017-01-10 11:14:27 -05:00
cm_msgs.h
cm.c IB/cm: Refactor to avoid setting path record software only fields 2017-12-18 15:37:12 -07:00
cma_configfs.c RDMA/cma: make config_item_type const 2017-10-19 16:15:31 +02:00
cma.c IB/{core, cm, cma, ipoib}: Rename ib_init_ah_from_path to ib_init_ah_attr_from_path 2017-12-18 15:37:11 -07:00
core_priv.h IB/core: Avoid exporting module internal function 2017-12-18 13:49:43 -07:00
cq.c IB/cq: Don't process more than the given budget 2017-03-24 22:19:48 -04:00
device.c IB/{core, ipoib}: Simplify ib_find_gid to search only for IB link layer 2017-12-18 15:37:10 -07:00
fmr_pool.c IB/fmr_pool: Convert the cleanup thread into kthread worker API 2017-04-25 14:24:17 -04:00
iwcm.c RDMA/iwcm: Remove a set-but-not-used variable 2017-10-14 20:47:05 -04:00
iwcm.h iw_cm: free cm_id resources on the last deref 2016-08-02 13:15:18 -04:00
iwpm_msg.c RDMA/iwpm: Properly mark end of NL messages 2017-09-29 11:32:42 -04:00
iwpm_util.c RDMA/iwpm: Fix uninitialized error code in iwpm_send_mapinfo() 2017-12-13 10:55:49 -07:00
iwpm_util.h
mad_priv.h
mad_rmpp.c IB/mad: Change slid in RMPP recv from 16 to 32 bits 2017-08-08 14:47:18 -04:00
mad_rmpp.h
mad.c drivers: infiniband: remove duplicate includes 2017-12-22 09:39:35 -07:00
Makefile Updates for 4.15 kernel merge window 2017-11-15 14:54:53 -08:00
mr_pool.c
multicast.c IB/core: Define 'ib' and 'roce' rdma_ah_attr types 2017-05-01 14:32:43 -04:00
netlink.c drivers: infiniband: remove duplicate includes 2017-12-22 09:39:35 -07:00
nldev.c RDMA/nldev: Enforce device index check for port callback 2017-10-31 12:12:55 -07:00
opa_smi.h
packer.c
rdma_core.c IB/core: Explicitly destroy an object while keeping uobject 2017-08-31 08:35:11 -04:00
rdma_core.h IB/core: Add new ioctl interface 2017-08-31 08:35:09 -04:00
roce_gid_mgmt.c IB/core: Add generic function to extract IB speed from netdev 2017-07-24 08:45:11 -04:00
rw.c IB/core: remove redundant check on prot_sg_cnt 2017-10-10 10:49:45 -04:00
sa_query.c IB/SA: Check dlid before SA agent queries for ClassPortInfo 2017-12-22 13:33:30 -07:00
sa.h
security.c IB/core: Avoid exporting module internal function 2017-12-18 13:49:43 -07:00
smi.c
smi.h
sysfs.c IB/core: Fix unable to change lifespan entry for hw_counters 2017-10-18 12:10:36 -04:00
ucm.c IB/core: Convert ah_attr from OPA to IB when copying to user 2017-08-08 14:47:18 -04:00
ucma.c IB/core: Convert ah_attr from OPA to IB when copying to user 2017-08-08 14:47:18 -04:00
ud_header.c
umem_odp.c RDMA/umem: Avoid partial declaration of non-static function 2017-11-10 13:02:12 -05:00
umem.c IB/umem: Fix use of npages/nmap fields 2017-12-18 15:37:06 -07:00
user_mad.c IB/{core, umad, cm}: Rename ib_init_ah_from_wc to ib_init_ah_attr_from_wc 2017-12-18 15:37:11 -07:00
uverbs_cmd.c IB/core: Use PTR_ERR_OR_ZERO() 2017-12-11 16:19:43 -07:00
uverbs_ioctl_merge.c IB/core: fix spelling mistake: "aceess" -> "access" 2017-09-27 08:54:19 -04:00
uverbs_ioctl.c RDMA/uverbs: Make the code in ib_uverbs_cmd_verbs() less confusing 2017-10-18 10:42:02 -04:00
uverbs_main.c IB/uverbs: Allow CQ moderation with modify CQ 2017-11-13 16:59:22 -05:00
uverbs_marshall.c IB/core: Convert OPA AH to IB for Extended LIDs only 2017-11-13 15:53:57 -05:00
uverbs_std_types.c RDMA/core: avoid uninitialized variable warning in create_udata 2017-11-13 16:11:11 -05:00
uverbs.h IB/uverbs: Allow CQ moderation with modify CQ 2017-11-13 16:59:22 -05:00
verbs.c IB/{core, umad, cm}: Rename ib_init_ah_from_wc to ib_init_ah_attr_from_wc 2017-12-18 15:37:11 -07:00