On Fri, Apr 28, 2023 at 12:13:22PM -0500, Bob Pearson wrote: > Replace tasklets by work queues for the three main rxe tasklets: > rxe_requester, rxe_completer and rxe_responder. > > Rebased to current for-next branch with changes, below, applied. > > Link: https://lore.kernel.org/linux-rdma/20230329193308.7489-1-rpearsonhpe@xxxxxxxxx/ > Signed-off-by: Ian Ziemba <ian.ziemba@xxxxxxx> > Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> > Reviewed-by: Daisuke Matsuda <matsuda-daisuke@xxxxxxxxxxx> > Tested-by: Daisuke Matsuda <matsuda-daisuke@xxxxxxxxxxx> > --- > v8: > Corrected a soft cpu lockup by testing return value from task->func > for all task states. > Removed WQ_CPU_INTENSIVE flag from alloc_workqueue() since documentation > shows that this has no effect if WQ_UNBOUND is set. > Removed work_pending() call in __reserve_if_idle() since by design > a task cannot be pending and idle at the same time. > Renamed __do_task() to do_work() per a comment by Diasuke Matsuda. > v7: > Adjusted so patch applies after changes to rxe_task.c. > v6: > Fixed left over references to tasklets in the comments. > Added WQ_UNBOUND to the parameters for alloc_workqueue(). This shows > a significant performance improvement. > v5: > Based on corrected task logic for tasklets and simplified to only > convert from tasklets to workqueues and not provide a flexible > interface. > --- > drivers/infiniband/sw/rxe/rxe.c | 9 ++- > drivers/infiniband/sw/rxe/rxe_task.c | 108 +++++++++++++++------------ > drivers/infiniband/sw/rxe/rxe_task.h | 6 +- > 3 files changed, 75 insertions(+), 48 deletions(-) Applied to for-next, thanks Jason