]> git.baikalelectronics.ru Git - kernel.git/commitdiff
RDMA/bnxt_re: Do not add user qps to flushlist
authorSelvin Xavier <selvin.xavier@broadcom.com>
Thu, 6 Aug 2020 04:45:48 +0000 (21:45 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 20 Aug 2020 11:31:41 +0000 (08:31 -0300)
Driver shall add only the kernel qps to the flush list for clean up.
During async error events from the HW, driver is adding qps to this list
without checking if the qp is kernel qp or not.

Add a check to avoid user qp addition to the flush list.

Fixes: f174244a1019 ("RDMA/bnxt_re: Avoid Hard lockup during error CQE processing")
Fixes: 5d0f6c3be83d ("bnxt_re: fix the regression due to changes in alloc_pbl")
Link: https://lore.kernel.org/r/1596689148-4023-1-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/bnxt_re/main.c

index dad0df8a2467993aca1dac4d782bf2045292e62e..17ac8b7c571047ea866ffae28d82e86f43b21977 100644 (file)
@@ -821,7 +821,8 @@ static int bnxt_re_handle_qp_async_event(struct creq_qp_event *qp_event,
        struct ib_event event;
        unsigned int flags;
 
-       if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR) {
+       if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR &&
+           rdma_is_kernel_res(&qp->ib_qp.res)) {
                flags = bnxt_re_lock_cqs(qp);
                bnxt_qplib_add_flush_qp(&qp->qplib_qp);
                bnxt_re_unlock_cqs(qp, flags);