mirror of
https://github.com/torvalds/linux.git
synced 2025-11-07 12:10:52 +02:00
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>
|
||
|---|---|---|
| .. | ||
| ah.c | ||
| ah.h | ||
| cq.c | ||
| cq.h | ||
| Kconfig | ||
| mad.c | ||
| mad.h | ||
| Makefile | ||
| 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 | ||