linux_dsm_epyc7002/drivers/infiniband/hw
Tadeusz Struk 22546b741a IB/hfi1: Fix softlockup issue
Soft lockups can occur because the mad processing on different CPUs acquire
the spin lock dc8051_lock:

[534552.835870]  [<ffffffffa026f993>] ? read_dev_port_cntr.isra.37+0x23/0x160 [hfi1]
[534552.835880]  [<ffffffffa02775af>] read_dev_cntr+0x4f/0x60 [hfi1]
[534552.835893]  [<ffffffffa028d7cd>] pma_get_opa_portstatus+0x64d/0x8c0 [hfi1]
[534552.835904]  [<ffffffffa0290e7d>] hfi1_process_mad+0x48d/0x18c0 [hfi1]
[534552.835908]  [<ffffffff811dc1f1>] ? __slab_free+0x81/0x2f0
[534552.835936]  [<ffffffffa024c34e>] ? ib_mad_recv_done+0x21e/0xa30 [ib_core]
[534552.835939]  [<ffffffff811dd153>] ? __kmalloc+0x1f3/0x240
[534552.835947]  [<ffffffffa024c3fb>] ib_mad_recv_done+0x2cb/0xa30 [ib_core]
[534552.835955]  [<ffffffffa0237c85>] __ib_process_cq+0x55/0xd0 [ib_core]
[534552.835962]  [<ffffffffa0237d70>] ib_cq_poll_work+0x20/0x60 [ib_core]
[534552.835964]  [<ffffffff810a7f3b>] process_one_work+0x17b/0x470
[534552.835966]  [<ffffffff810a8d76>] worker_thread+0x126/0x410
[534552.835969]  [<ffffffff810a8c50>] ? rescuer_thread+0x460/0x460
[534552.835971]  [<ffffffff810b052f>] kthread+0xcf/0xe0
[534552.835974]  [<ffffffff810b0460>] ? kthread_create_on_node+0x140/0x140
[534552.835977]  [<ffffffff81696418>] ret_from_fork+0x58/0x90
[534552.835980]  [<ffffffff810b0460>] ? kthread_create_on_node+0x140/0x140

This issue is made worse when the 8051 is busy and the reads take longer.
Fix by using a non-spinning lock procure.

Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Reviewed-by: Mike Marciszyn <mike.marciniszyn@intel.com>
Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2017-04-28 13:56:15 -04:00
..
bnxt_re IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
cxgb3 IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
cxgb4 iw_cxgb4: check return value of alloc_skb 2017-04-28 13:09:55 -04:00
hfi1 IB/hfi1: Fix softlockup issue 2017-04-28 13:56:15 -04:00
hns IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
i40iw IB/i40iw: use setup_timer 2017-04-28 13:19:05 -04:00
mlx4 IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
mlx5 IB/mlx5: Add ODP support to MW 2017-04-25 15:40:28 -04:00
mthca IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
nes IB/nes: use setup_timer 2017-04-28 13:19:13 -04:00
ocrdma IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
qedr RDMA/qedr: add support for send+invalidate in poll CQ 2017-04-28 12:47:57 -04:00
qib IB/rdmavt/hfi1/qib: Use the MGID and MLID for multicast addressing 2017-04-28 13:48:01 -04:00
usnic IB/usnic: Simplify the code to balance loc/unlock calls 2017-04-28 13:11:43 -04:00
vmw_pvrdma IB: Replace ib_umem page_size by page_shift 2017-04-25 15:40:28 -04:00
Makefile RDMA/bnxt_re: Add bnxt_re driver build support 2017-02-14 09:51:28 -05:00