diff options
| author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2016-12-01 14:31:31 -0500 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2017-01-23 14:33:02 -0500 |
| commit | 28053bc72c0e588c577557ce9e95a6cb65078471 (patch) | |
| tree | 726ea7d7949bfdd5bde84fe7693c1ac98b95816f /kernel/rcu/tree.c | |
| parent | 94060d2235cf419f2d46dbce95727e6f826b233c (diff) | |
rcu: Add long-term CPU kicking
This commit prepares for the removal of short-term CPU kicking (in a
subsequent commit). It does so by starting to invoke resched_cpu()
for each holdout at each force-quiescent-state interval that is more
than halfway through the stall-warning interval.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Diffstat (limited to 'kernel/rcu/tree.c')
| -rw-r--r-- | kernel/rcu/tree.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 83bf054e194e..0e61b62e3f4a 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -1225,6 +1225,12 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, | |||
| 1225 | rdp->rsp->gp_start + 2 * jiffies_till_sched_qs) || | 1225 | rdp->rsp->gp_start + 2 * jiffies_till_sched_qs) || |
| 1226 | ULONG_CMP_GE(jiffies, rdp->rsp->gp_start + jiffies_till_sched_qs)) | 1226 | ULONG_CMP_GE(jiffies, rdp->rsp->gp_start + jiffies_till_sched_qs)) |
| 1227 | resched_cpu(rdp->cpu); /* Force CPU into scheduler. */ | 1227 | resched_cpu(rdp->cpu); /* Force CPU into scheduler. */ |
| 1228 | /* | ||
| 1229 | * If more than halfway to RCU CPU stall-warning time, do | ||
| 1230 | * a resched_cpu() to try to loosen things up a bit. | ||
| 1231 | */ | ||
| 1232 | if (jiffies - rdp->rsp->gp_start > rcu_jiffies_till_stall_check() / 2) | ||
| 1233 | resched_cpu(rdp->cpu); | ||
| 1228 | 1234 | ||
| 1229 | return 0; | 1235 | return 0; |
| 1230 | } | 1236 | } |
