aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2013-02-04 15:14:24 -0500
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2013-03-12 17:07:37 -0400
commitb0f740360efec6e6471547c0548f250bc045a233 (patch)
treed76138b1443740c2aea593331c0898fe6c99a124 /kernel/rcutree.c
parentb5b393601dbce0bce3f0717f29e6c8d1cf0295da (diff)
rcu: Avoid invoking RCU core on offline CPUs
Offline CPUs transition through the scheduler to the idle loop one last time before being shut down. This can result in RCU raising softirq on this CPU, which is at best useless given that the CPU's callbacks will be offloaded at CPU_DEAD time. This commit therefore avoids raising softirq on offline CPUs. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r--kernel/rcutree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 157539a975df..b2fc234ba1b9 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2169,7 +2169,8 @@ static void invoke_rcu_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
2169 2169
2170static void invoke_rcu_core(void) 2170static void invoke_rcu_core(void)
2171{ 2171{
2172 raise_softirq(RCU_SOFTIRQ); 2172 if (cpu_online(smp_processor_id()))
2173 raise_softirq(RCU_SOFTIRQ);
2173} 2174}
2174 2175
2175/* 2176/*