]> www.infradead.org Git - users/jedix/linux-maple.git/commit
sif: cq: Implement error tracking
authorKnut Omang <knut.omang@oracle.com>
Thu, 15 Sep 2016 19:08:18 +0000 (21:08 +0200)
committerKnut Omang <knut.omang@oracle.com>
Mon, 3 Oct 2016 12:02:27 +0000 (14:02 +0200)
commit11d82a378f0003625d6c4da0a497b2d91d6feaec
tree877a9cc57715aad4e0ff83a9f7efad7fbfdc2a3a
parent34ee1621fe2897e3d0a9f77ad8a88bd6a3130829
sif: cq: Implement error tracking

This commit introduces a new state variable 'in_error'
in the CQ state. When a CQ error event is detected
cq->in_error is set.

This state is then checked before
* posting a req_notify_cq
* invoking any of the completion generating
  workarounds.

Also set qp->last_set_state to ERR if a fatal QP event
is detected to reduce further posting on that QP.

This commit reduces the risk of getting into a privileged
QP error scenario for some common cases of misbehaved
applications, and also enables the driver to terminate more
quickly if a priv.QP error has occurred.

Orabug: 24715634

Signed-off-by: Knut Omang <knut.omang@oracle.com>
Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
drivers/infiniband/hw/sif/sif_cq.c
drivers/infiniband/hw/sif/sif_cq.h
drivers/infiniband/hw/sif/sif_eq.c
drivers/infiniband/hw/sif/sif_pqp.c
drivers/infiniband/hw/sif/sif_qp.c
drivers/infiniband/hw/sif/sif_qp.h
drivers/infiniband/hw/sif/sif_r3.c
drivers/infiniband/hw/sif/sif_rq.c