> With current code, when we destroy a QP, we remove it from table first,
 > and move QP to reset. This is clearly wrong, and this patch fixes this.

I guess so, but it still leaves some other obvious races.  First, the
QP is removed from the table before its CQEs are cleaned -- to fix
this, we should move the mthca_cq_clean() call inside the CQ locks
(and change mthca_cq_clean to require the CQ lock be held).  Second, I
think we do need to synchronize against the asynchronous event
interrupt when freeing a QP.

I don't think the modify QP to reset code needs to change, since the
QP is not being removed from the table there.

 > To fix the issue completely, the simplest approach is to use the same
 > EQ for completion and async events and for command interface.
 > I plan to send such a patch next week.

I don't get it -- how do you handle having multiple completion EQs
with this idea?

 - R.
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to