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>