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>
                                                *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);