mbox series

[for-next,0/9] RDMA/rxe: Correct qp reference counting

Message ID 20230222233237.48940-1-rpearsonhpe@gmail.com (mailing list archive)
Headers show
Series RDMA/rxe: Correct qp reference counting | expand

Message

Bob Pearson Feb. 22, 2023, 11:32 p.m. UTC
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@TYCPR01MB8455.jpnprd01.prod.outlook.com/
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>

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