diff options
author | Mike Marciniszyn <mike.marciniszyn@intel.com> | 2017-04-09 10:16:35 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-05-20 14:28:38 +0200 |
commit | e3cea38357ea66d63b1c42500c69ca88a3f0c44f (patch) | |
tree | af3ebc979b7de6be128c985120ff26d29407ada5 /tools/perf/util/auxtrace.c | |
parent | 43c54927f6f4e0dba5714dbcd53fea44114cd7cf (diff) |
IB/hfi1: Prevent kernel QP post send hard lockups
commit b6eac931b9bb2bce4db7032c35b41e5e34ec22a5 upstream.
The driver progress routines can call cond_resched() when
a timeslice is exhausted and irqs are enabled.
If the ULP had been holding a spin lock without disabling irqs and
the post send directly called the progress routine, the cond_resched()
could yield allowing another thread from the same ULP to deadlock
on that same lock.
Correct by replacing the current hfi1_do_send() calldown with a unique
one for post send and adding an argument to hfi1_do_send() to indicate
that the send engine is running in a thread. If the routine is not
running in a thread, avoid calling cond_resched().
Fixes: Commit 831464ce4b74 ("IB/hfi1: Don't call cond_resched in atomic mode when sending packets")
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/perf/util/auxtrace.c')
0 files changed, 0 insertions, 0 deletions