• Tadeusz Struk's avatar
    IB/hfi1: Fix softlockup issue · 22546b74
    Tadeusz Struk authored
    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: default avatarMichael J. Ruhl <michael.j.ruhl@intel.com>
    Reviewed-by: default avatarMike Marciszyn <mike.marciniszyn@intel.com>
    Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@intel.com>
    Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    22546b74
chip.c 444 KB