aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2014-10-23 13:50:41 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2014-10-29 13:20:07 -0400
commit776d680711f4836964f3005ee53794661ca74629 (patch)
treecf879af6d61e6fcc19ed0cf8b6974813e5922ddd /kernel/rcu/tree.c
parent28f6569ab7d036cd4ee94c26bb76dc1b3f3fc056 (diff)
rcu: Kick rcuo kthreads after their CPU goes offline
If a no-CBs CPU were to post an RCU callback with interrupts disabled after it entered the idle loop for the last time, there might be no deferred wakeup for the corresponding rcuo kthreads. This commit therefore adds a set of calls to do_nocb_deferred_wakeup() after the CPU has gone completely offline. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 9e3c20f117cd..07bf4aa68d50 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -3497,8 +3497,10 @@ static int rcu_cpu_notify(struct notifier_block *self,
3497 case CPU_DEAD_FROZEN: 3497 case CPU_DEAD_FROZEN:
3498 case CPU_UP_CANCELED: 3498 case CPU_UP_CANCELED:
3499 case CPU_UP_CANCELED_FROZEN: 3499 case CPU_UP_CANCELED_FROZEN:
3500 for_each_rcu_flavor(rsp) 3500 for_each_rcu_flavor(rsp) {
3501 rcu_cleanup_dead_cpu(cpu, rsp); 3501 rcu_cleanup_dead_cpu(cpu, rsp);
3502 do_nocb_deferred_wakeup(per_cpu_ptr(rsp->rda, cpu));
3503 }
3502 break; 3504 break;
3503 default: 3505 default:
3504 break; 3506 break;