diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-03-27 10:04:06 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-03-27 10:04:06 +0100 |
commit | 4bfe186dbe0a058680e4bfb0d673194f0ceaffd4 (patch) | |
tree | 5e374857dcd979d50f51c7091505784cb053d078 /kernel/sched | |
parent | 3c435c1e472ba344ee25f795f4807d4457e61f6c (diff) | |
parent | 42528795ac1c8d7ba021797ec004904168956d64 (diff) | |
download | linux-stable-4bfe186dbe0a058680e4bfb0d673194f0ceaffd4.tar.gz linux-stable-4bfe186dbe0a058680e4bfb0d673194f0ceaffd4.tar.bz2 linux-stable-4bfe186dbe0a058680e4bfb0d673194f0ceaffd4.zip |
Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
Pull RCU updates from Paul E. McKenney:
- Documentation updates.
- Changes permitting use of call_rcu() and friends very early in
boot, for example, before rcu_init() is invoked.
- Miscellaneous fixes.
- Add in-kernel API to enable and disable expediting of normal RCU
grace periods.
- Improve RCU's handling of (hotplug-) outgoing CPUs.
Note: ARM support is lagging a bit here, and these improved
diagnostics might generate (harmless) splats.
- NO_HZ_FULL_SYSIDLE fixes.
- Tiny RCU updates to make it more tiny.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/idle.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 80014a178342..d27d36476dca 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -210,6 +210,8 @@ use_default: goto exit_idle; } +DEFINE_PER_CPU(bool, cpu_dead_idle); + /* * Generic idle loop implementation * @@ -234,8 +236,13 @@ static void cpu_idle_loop(void) check_pgt_cache(); rmb(); - if (cpu_is_offline(smp_processor_id())) + if (cpu_is_offline(smp_processor_id())) { + rcu_cpu_notify(NULL, CPU_DYING_IDLE, + (void *)(long)smp_processor_id()); + smp_mb(); /* all activity before dead. */ + this_cpu_write(cpu_dead_idle, true); arch_cpu_idle_dead(); + } local_irq_disable(); arch_cpu_idle_enter(); |