Commit 831464ce authored by Kaike Wan's avatar Kaike Wan Committed by Doug Ledford

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: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: default avatarKaike Wan <kaike.wan@intel.com>
Signed-off-by: default avatarJubin John <jubin.john@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 528ee9fb
...@@ -906,8 +906,11 @@ void hfi1_do_send(struct rvt_qp *qp) ...@@ -906,8 +906,11 @@ void hfi1_do_send(struct rvt_qp *qp)
*ps.ppd->dd->send_schedule); *ps.ppd->dd->send_schedule);
return; return;
} }
if (!irqs_disabled()) {
cond_resched(); cond_resched();
this_cpu_inc(*ps.ppd->dd->send_schedule); this_cpu_inc(
*ps.ppd->dd->send_schedule);
}
timeout = jiffies + (timeout_int) / 8; timeout = jiffies + (timeout_int) / 8;
} }
spin_lock_irqsave(&qp->s_lock, flags); spin_lock_irqsave(&qp->s_lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment