提交 35b61edb 编写于 作者: T Thomas Gleixner

x86: Use tick broadcast expired check

Avoid going back into deep idle if the tick broadcast IPI is about to
fire.
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Arjan van de Veen <arjan@infradead.org>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/20130306111537.702278273@linutronix.de
上级 80bbe9f2
...@@ -336,6 +336,18 @@ void cpu_idle(void) ...@@ -336,6 +336,18 @@ void cpu_idle(void)
local_touch_nmi(); local_touch_nmi();
local_irq_disable(); local_irq_disable();
/*
* We detected in the wakeup path that the
* tick broadcast device expired for us, but
* we raced with the other CPU and came back
* here before it was able to fire the IPI.
* No point in going idle.
*/
if (tick_check_broadcast_expired()) {
local_irq_enable();
continue;
}
enter_idle(); enter_idle();
/* Don't trace irqs off for idle */ /* Don't trace irqs off for idle */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册