linux/drivers/infiniband/hw
Yixian Liu b53742865e RDMA/hns: Delayed flush cqe process with workqueue
HiP08 RoCE hardware lacks ability(a known hardware problem) to flush
outstanding WQEs if QP state gets into errored mode for some reason.  To
overcome this hardware problem and as a workaround, when QP is detected to
be in errored state during various legs like post send, post receive
etc[1], flush needs to be performed from the driver.

The earlier patch[1] sent to solve the hardware limitation explained in
the cover-letter had a bug in the software flushing leg. It acquired mutex
while modifying QP state to errored state and while conveying it to the
hardware using the mailbox. This caused leg to sleep while holding
spin-lock and caused crash.

Suggested Solution: we have proposed to defer the flushing of the QP in
the Errored state using the workqueue to get around with the limitation of
our hardware.

This patch specifically adds the calls to the flush handler from where
parts of the code like post_send/post_recv etc. when the QP state gets
into the errored mode.

[1] https://patchwork.kernel.org/patch/10534271/

Link: https://lore.kernel.org/r/1580983005-13899-3-git-send-email-liuyixian@huawei.com
Signed-off-by: Yixian Liu <liuyixian@huawei.com>
Reviewed-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2020-02-13 16:44:21 -04:00
..
bnxt_re RDMA subsystem updates for 5.6 2020-01-31 14:40:36 -08:00
cxgb4 IB: Allow calls to ib_umem_get from kernel ULPs 2020-01-16 16:14:28 +02:00
efa RDMA/efa: Mask access flags with the correct optional range 2020-01-29 16:41:05 -04:00
hfi1 RDMA subsystem updates for 5.6 2020-01-31 14:40:36 -08:00
hns RDMA/hns: Delayed flush cqe process with workqueue 2020-02-13 16:44:21 -04:00
i40iw i40iw: Do an RCU lookup in i40iw_add_ipv4_addr 2020-02-11 14:31:11 -04:00
mlx4 IB/mlx4: Fix leak in id_map_find_del 2020-01-27 16:46:53 -04:00
mlx5 RDMA subsystem updates for 5.6 2020-01-31 14:40:36 -08:00
mthca mm, tree-wide: rename put_user_page*() to unpin_user_page*() 2020-01-31 10:30:38 -08:00
ocrdma IB: Allow calls to ib_umem_get from kernel ULPs 2020-01-16 16:14:28 +02:00
qedr Use ODP MRs for kernel ULPs 2020-01-21 09:55:04 -04:00
qib mm, tree-wide: rename put_user_page*() to unpin_user_page*() 2020-01-31 10:30:38 -08:00
usnic mm, tree-wide: rename put_user_page*() to unpin_user_page*() 2020-01-31 10:30:38 -08:00
vmw_pvrdma IB: Allow calls to ib_umem_get from kernel ULPs 2020-01-16 16:14:28 +02:00
Makefile RDMA/iw_cxgb3: Remove the iw_cxgb3 module from kernel 2019-10-04 15:08:59 -03:00