mirror of https://gitee.com/openkylin/linux.git
0208da90de
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> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
ah.c | ||
ah.h | ||
cq.c | ||
cq.h | ||
mad.c | ||
mad.h | ||
mcast.c | ||
mcast.h | ||
mmap.c | ||
mmap.h | ||
mr.c | ||
mr.h | ||
pd.c | ||
pd.h | ||
qp.c | ||
qp.h | ||
rc.c | ||
srq.c | ||
srq.h | ||
trace.c | ||
trace.h | ||
trace_cq.h | ||
trace_mr.h | ||
trace_qp.h | ||
trace_rc.h | ||
trace_rvt.h | ||
trace_tx.h | ||
vt.c | ||
vt.h |