Hi Doug, The mlx5 driver handles completion callbacks inside interrupts. These callbacks could be lengthy and thus cause hard lockups. In order to avoid these lockups, we introduce a tasklet mechanism. The mlx5_ib driver uses this mechanism in order to defer its completion callbacks processing to the tasklet. This follows the same mechanism we implemented for mlx4 that successfully decreased the processing time in interrupts. Regards, Matan Matan Barak (2): net/mlx5_core: Use tasklet for user-space CQ completion events IB/mlx5: Fire the CQ completion handler from tasklet drivers/infiniband/hw/mlx5/cq.c | 5 +- drivers/net/ethernet/mellanox/mlx5/core/cq.c | 59 ++++++++++++++++++++++ drivers/net/ethernet/mellanox/mlx5/core/eq.c | 12 ++++- drivers/net/ethernet/mellanox/mlx5/core/main.c | 17 +++++++ .../net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 + include/linux/mlx5/cq.h | 5 ++ include/linux/mlx5/driver.h | 10 ++++ 7 files changed, 108 insertions(+), 2 deletions(-) -- 2.5.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html