diff options
| author | Ingo Molnar <mingo@kernel.org> | 2015-03-27 05:04:06 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2015-03-27 05:04:06 -0400 |
| commit | 4bfe186dbe0a058680e4bfb0d673194f0ceaffd4 (patch) | |
| tree | 5e374857dcd979d50f51c7091505784cb053d078 /kernel/sched | |
| parent | 3c435c1e472ba344ee25f795f4807d4457e61f6c (diff) | |
| parent | 42528795ac1c8d7ba021797ec004904168956d64 (diff) | |
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: | |||
| 210 | goto exit_idle; | 210 | goto exit_idle; |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | DEFINE_PER_CPU(bool, cpu_dead_idle); | ||
| 214 | |||
| 213 | /* | 215 | /* |
| 214 | * Generic idle loop implementation | 216 | * Generic idle loop implementation |
| 215 | * | 217 | * |
| @@ -234,8 +236,13 @@ static void cpu_idle_loop(void) | |||
| 234 | check_pgt_cache(); | 236 | check_pgt_cache(); |
| 235 | rmb(); | 237 | rmb(); |
| 236 | 238 | ||
| 237 | if (cpu_is_offline(smp_processor_id())) | 239 | if (cpu_is_offline(smp_processor_id())) { |
| 240 | rcu_cpu_notify(NULL, CPU_DYING_IDLE, | ||
| 241 | (void *)(long)smp_processor_id()); | ||
| 242 | smp_mb(); /* all activity before dead. */ | ||
| 243 | this_cpu_write(cpu_dead_idle, true); | ||
| 238 | arch_cpu_idle_dead(); | 244 | arch_cpu_idle_dead(); |
| 245 | } | ||
| 239 | 246 | ||
| 240 | local_irq_disable(); | 247 | local_irq_disable(); |
| 241 | arch_cpu_idle_enter(); | 248 | arch_cpu_idle_enter(); |
