aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rdma
diff options
context:
space:
mode:
authorKaike Wan <kaike.wan@intel.com>2016-03-05 08:50:49 -0800
committerDoug Ledford <dledford@redhat.com>2016-03-17 15:55:18 -0400
commit831464ce4b74eaec723bad51ea48fe3879732f66 (patch)
tree4be222146bfeee71a651665fe0c2e82b8367f9ac /drivers/staging/rdma
parentIB/hfi1: Add adaptive cacheless verbs copy (diff)
downloadlinux-dev-831464ce4b74eaec723bad51ea48fe3879732f66.tar.xz
linux-dev-831464ce4b74eaec723bad51ea48fe3879732f66.zip
IB/hfi1: Don't call cond_resched in atomic mode when sending packets
This patch fixed the problem where the driver might reschedule in atomic mode when sending packets. This is due to the fact that the call to cond_resched() in hfi1_do_send() might occur in atomic mode and a check is required to avoid the warning message: "kernel: BUG: scheduling while atomic: swapper/2/0/0x10000100." Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Kaike Wan <kaike.wan@intel.com> Signed-off-by: Jubin John <jubin.john@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/staging/rdma')
-rw-r--r--drivers/staging/rdma/hfi1/ruc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/staging/rdma/hfi1/ruc.c b/drivers/staging/rdma/hfi1/ruc.c
index aa53859503ee..08813cdbd475 100644
--- a/drivers/staging/rdma/hfi1/ruc.c
+++ b/drivers/staging/rdma/hfi1/ruc.c
@@ -906,8 +906,11 @@ void hfi1_do_send(struct rvt_qp *qp)
*ps.ppd->dd->send_schedule);
return;
}
- cond_resched();
- this_cpu_inc(*ps.ppd->dd->send_schedule);
+ if (!irqs_disabled()) {
+ cond_resched();
+ this_cpu_inc(
+ *ps.ppd->dd->send_schedule);
+ }
timeout = jiffies + (timeout_int) / 8;
}
spin_lock_irqsave(&qp->s_lock, flags);