linux-stable/drivers/infiniband/sw/rdmavt
Mike Marciniszyn 0208da90de IB/rdmavt: Handle dereg of inuse MRs properly
A destroy of an MR prior to destroying the QP can cause the following
diagnostic if the QP is referencing the MR being de-registered:

hfi1 0000:05:00.0: hfi1_0: rvt_dereg_mr timeout mr ffff8808562108
              00 pd ffff880859b20b00

The solution is to when the a non-zero refcount is encountered when
the MR is destroyed the QPs needs to be iterated looking for QPs in
the same PD as the MR.  If rvt_qp_mr_clean() detects any such QP
references the rkey/lkey, the QP needs to be put into an error state
via a call to rvt_qp_error() which will trigger the clean up of any
stuck references.

This solution is as specified in IBTA 1.3 Volume 1 11.2.10.5.

[This is reproduced with the 0.4.9 version of qperf and the rc_bw test]

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2017-08-28 19:12:31 -04:00
..
ah.c IB/rdmavt, hfi1, qib: Modify check_ah() to account for extended LIDs 2017-08-22 14:22:36 -04:00
ah.h IB/core: Rename struct ib_ah_attr to rdma_ah_attr 2017-05-01 14:32:43 -04:00
cq.c Add OPA extended LID support 2017-08-18 14:47:37 -04:00
cq.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
Kconfig IB/rxe, IB/rdmavt: Use dma_virt_ops instead of duplicating it 2017-01-24 12:31:32 -05:00
mad.c IB/core: Rename ib_destroy_ah to rdma_destroy_ah 2017-05-01 14:32:43 -04:00
mad.h IB/rdmavt: Clean up distinction between port number and index 2016-03-10 20:37:31 -05:00
Makefile This is a tree wide change and has been kept separate for that reason. 2017-02-25 13:45:43 -08:00
mcast.c IB/rdmavt/hfi1/qib: Use the MGID and MLID for multicast addressing 2017-04-28 13:48:01 -04:00
mcast.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
mmap.c infiniband: Fix alignment of mmap cookies to support VIPT caching 2017-03-24 16:50:51 -04:00
mmap.h IB/rdmavt: Remove unnecessary exported functions 2016-03-10 20:38:10 -05:00
mr.c IB/rdmavt: Handle dereg of inuse MRs properly 2017-08-28 19:12:31 -04:00
mr.h IB/rdmavt: Add support for ib_map_mr_sg 2016-08-02 16:00:58 -04:00
pd.c IB/hfi1, rdmavt: Update copy_sge to use boolean arguments 2017-02-19 09:18:41 -05:00
pd.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
qp.c IB/rdmavt: Handle dereg of inuse MRs properly 2017-08-28 19:12:31 -04:00
qp.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
rc.c IB/hfi1, qib, rdmavt: Move AETH defines to rdma/ib_hdrs.h 2017-02-19 09:18:44 -05:00
srq.c IB/rdmavt: Remove unnecessary exported functions 2016-03-10 20:38:10 -05:00
srq.h IB/rdmavt: Add srq functionality to rdmavt 2016-03-10 20:37:30 -05:00
trace.c IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
trace.h IB/rdmavt, IB/hfi1: Fix timer migration regressions 2017-04-05 14:45:09 -04:00
trace_cq.h IB/rdmavt: Add tracing for cq entry and poll 2017-04-05 14:45:09 -04:00
trace_mr.h IB/rdmavt: Compress adjacent SGEs in rvt_lkey_ok() 2017-06-27 16:56:33 -04:00
trace_qp.h IB/rdmavt: Fix trace hierarchy 2016-12-11 15:25:13 -05:00
trace_rc.h IB/rdmavt, IB/hfi1: Fix timer migration regressions 2017-04-05 14:45:09 -04:00
trace_rvt.h IB/rdmavt: Fix trace hierarchy 2016-12-11 15:25:13 -05:00
trace_tx.h IB/rdmavt: Compress adjacent SGEs in rvt_lkey_ok() 2017-06-27 16:56:33 -04:00
vt.c IB/core,rdmavt,hfi1,opa-vnic: Send OPA cap_mask3 in trap 2017-06-27 16:58:12 -04:00
vt.h IB/rxe, IB/rdmavt: Use dma_virt_ops instead of duplicating it 2017-01-24 12:31:32 -05:00