On Mon, Aug 27, 2018 at 08:35:55AM +0300, Leon Romanovsky wrote: > From: Jack Morgenstein <jackm@xxxxxxxxxxxxxxxxxx> > > The upstream kernel commit cited below modified the workqueue in the > new CQ API to be bound to a specific CPU (instead of being unbound). > This caused ALL users of the new CQ API to use the same bound WQ. > > Specifically, MAD handling was severely delayed when the CPU bound > to the WQ was busy handling (higher priority) interrupts. > > This caused a delay in the MAD "heartbeat" response handling, > which resulted in ports being incorrectly classified as "down". > > To fix this, add a new "unbound" WQ type to the new CQ API, so that users > have the option to choose either a bound WQ or an unbound WQ. > > For MADs, choose the new "unbound" WQ. > > Fixes: b7363e67b23e ("IB/device: Convert ib-comp-wq to be CPU-bound") > Signed-off-by: Jack Morgenstein <jackm@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > Reviewed-by: Sagi Grimberg <sagi@grimberg.m> > --- > Changelog v0->v1: > * Remove duplication of handlers by changing workqueue pointer, as > was suggested by Sagi. > --- > drivers/infiniband/core/cq.c | 8 ++++++-- > drivers/infiniband/core/device.c | 15 ++++++++++++++- > drivers/infiniband/core/mad.c | 2 +- > include/rdma/ib_verbs.h | 9 ++++++--- > 4 files changed, 27 insertions(+), 7 deletions(-) > > -- > 2.14.4 Applied to for-next, thanks Jason