• Sindhu, Devale's avatar
    i40iw: Add support to make destroy QP synchronous · f2334964
    Sindhu, Devale authored
    Occasionally ib_write_bw crash is seen due to access of a pd object in
    i40iw_sc_qp_destroy after it is freed. Destroy qp is not synchronous in
    i40iw and thus the iwqp object could be referencing a pd object that is
    freed by ib core as a result of successful return from i40iw_destroy_qp.
    
    Wait in i40iw_destroy_qp till all QP references are released and destroy
    the QP and its associated resources before returning.  Switch to use the
    refcount API vs atomic API for lifetime management of the qp.
    
     RIP: 0010:i40iw_sc_qp_destroy+0x4b/0x120 [i40iw]
     [...]
     RSP: 0018:ffffb4a7042e3ba8 EFLAGS: 00010002
     RAX: 0000000000000000 RBX: 0000000000000001 RCX: dead000000000122
     RDX: ffffb4a7042e3bac RSI: ffff8b7ef9b1e940 RDI: ffff8b7efbf09080
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
     R10: 8080808080808080 R11: 0000000000000010 R12: ffff8b7efbf08050
     R13: 0000000000000001 R14: ffff8b7f15042928 R15: ffff8b7ef9b1e940
     FS:  0000000000000000(0000) GS:ffff8b7f2fa00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000400 CR3: 000000020d60a006 CR4: 00000000001606e0
     Call Trace:
      i40iw_exec_cqp_cmd+0x4d3/0x5c0 [i40iw]
      ? try_to_wake_up+0x1ea/0x5d0
      ? __switch_to_asm+0x40/0x70
      i40iw_process_cqp_cmd+0x95/0xa0 [i40iw]
      i40iw_handle_cqp_op+0x42/0x1a0 [i40iw]
      ? cm_event_handler+0x13c/0x1f0 [iw_cm]
      i40iw_rem_ref+0xa0/0xf0 [i40iw]
      cm_work_handler+0x99c/0xd10 [iw_cm]
      process_one_work+0x1a1/0x360
      worker_thread+0x30/0x380
      ? process_one_work+0x360/0x360
      kthread+0x10c/0x130
      ? kthread_park+0x80/0x80
      ret_from_fork+0x35/0x40
    
    Fixes: d3749841 ("i40iw: add files for iwarp interface")
    Link: https://lore.kernel.org/r/20200916131811.2077-1-shiraz.saleem@intel.comReported-by: default avatarKamal Heib <kheib@redhat.com>
    Signed-off-by: default avatarSindhu, Devale <sindhu.devale@intel.com>
    Signed-off-by: default avatarShiraz, Saleem <shiraz.saleem@intel.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    f2334964
i40iw_utils.c 40.3 KB