nohz: Support nohz full remote kick
authorFrederic Weisbecker <fweisbec@gmail.com>
Wed, 4 Jun 2014 14:17:33 +0000 (16:17 +0200)
committerFrederic Weisbecker <fweisbec@gmail.com>
Mon, 16 Jun 2014 14:26:54 +0000 (16:26 +0200)
commit3d36aebc2e78923095575df954f3f3b430ac0a30
tree59a76641c6c2c34447b2fbfa61d4e029950ba5dc
parent478850160636c4f0b2558451df0e42f8c5a10939
nohz: Support nohz full remote kick

Remotely kicking a full nohz CPU in order to make it re-evaluate its
next tick is currently implemented using the scheduler IPI.

However this bloats a scheduler fast path with an off-topic feature.
The scheduler tick was abused here for its cool "callable
anywhere/anytime" properties.

But now that the irq work subsystem can queue remote callbacks, it's
a perfect fit to safely queue IPIs when interrupts are disabled
without worrying about concurrent callers.

So lets implement remote kick on top of irq work. This is going to
be used when a new event requires the next tick to be recalculated:
more than 1 task competing on the CPU, timer armed, ...

Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Kevin Hilman <khilman@linaro.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
include/linux/tick.h
kernel/time/tick-sched.c