This patch series corrects qp reference counting issues related to deferred execution of tasklets. These issues were discovered in attempting to resolve soft lockups of the rxe driver observed by Daisuke Matsuda in a version of the driver using work queues where the workqueue implementation was based on the current tasklet based driver. An attempt to find the root cause of those lockups lead to an error in the tasklet implementation that has been present since the driver went upstream. This patch series corrects that error. In the course of this work it was necessary to improve the logging capabilities of the driver and these are included as well. This patch series is based on the current for-next branch. It has been tested with long simultaneous runs of pyverbs and perftest. Link: https://lore.kernel.org/linux-rdma/TYCPR01MB845522FD536170D75068DD41E5099@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> Bob Pearson (9): RDMA/rxe: Extend debug log messages RDMA/rxe: Add error messages RDMA/rxe: Convert tasklet args to queue pairs RDMA/rxe: Remove extra rxe_get(qp) in rxe_rcv_mcast_pkt RDMA/rxe: Add a warning if refcnt zero in rxe_put RDMA/rxe: Replace some __rxe_do_task by rxe_sched_task RDMA/rxe: Check for unsupported wr opcodes RDMA/rxe: Remove qp reference counting in tasks RDMA/rxe: Rewrite rxe_task.c drivers/infiniband/sw/rxe/rxe.c | 28 +- drivers/infiniband/sw/rxe/rxe.h | 45 +- drivers/infiniband/sw/rxe/rxe_comp.c | 11 +- drivers/infiniband/sw/rxe/rxe_cq.c | 6 +- drivers/infiniband/sw/rxe/rxe_icrc.c | 4 +- drivers/infiniband/sw/rxe/rxe_loc.h | 7 +- drivers/infiniband/sw/rxe/rxe_mmap.c | 6 +- drivers/infiniband/sw/rxe/rxe_mr.c | 13 - drivers/infiniband/sw/rxe/rxe_net.c | 4 +- drivers/infiniband/sw/rxe/rxe_pool.c | 2 + drivers/infiniband/sw/rxe/rxe_qp.c | 53 +- drivers/infiniband/sw/rxe/rxe_recv.c | 1 - drivers/infiniband/sw/rxe/rxe_req.c | 8 +- drivers/infiniband/sw/rxe/rxe_resp.c | 11 +- drivers/infiniband/sw/rxe/rxe_srq.c | 6 +- drivers/infiniband/sw/rxe/rxe_task.c | 275 ++++++-- drivers/infiniband/sw/rxe/rxe_task.h | 17 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 866 +++++++++++++++++++------- 18 files changed, 969 insertions(+), 394 deletions(-) base-commit: 66fb1d5df6ace316a4a6e2c31e13fc123ea2b644 -- 2.37.2