|
@@ -1225,6 +1225,12 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
|
|
|
rdp->rsp->gp_start + 2 * jiffies_till_sched_qs) ||
|
|
|
ULONG_CMP_GE(jiffies, rdp->rsp->gp_start + jiffies_till_sched_qs))
|
|
|
resched_cpu(rdp->cpu); /* Force CPU into scheduler. */
|
|
|
+ /*
|
|
|
+ * If more than halfway to RCU CPU stall-warning time, do
|
|
|
+ * a resched_cpu() to try to loosen things up a bit.
|
|
|
+ */
|
|
|
+ if (jiffies - rdp->rsp->gp_start > rcu_jiffies_till_stall_check() / 2)
|
|
|
+ resched_cpu(rdp->cpu);
|
|
|
|
|
|
return 0;
|
|
|
}
|