On Mon, Feb 24, 2014 at 02:55:50PM +0100, Daniel Lezcano wrote:
@@ -136,25 +155,8 @@ static void cpu_idle_loop(void)
local_irq_disable();
arch_cpu_idle_enter();
- /*
- * In poll mode we reenable interrupts and spin.
- *
- * Also if we detected in the wakeup from idle
- * path that the tick broadcast device expired
- * for us, we don't want to go deep idle as we
- * know that the IPI is going to arrive right
- * away
- */
- if (cpu_idle_force_poll || tick_check_broadcast_expired()) {
- cpu_idle_poll();
- } else {
- if (!current_clr_polling_and_test()) {
- cpuidle_idle_call();
- } else {
- local_irq_enable();
- }
- __current_set_polling();
- }
+ cpuidle_idle_call();
+
Yeah, not liking that much; you can make it look like:
if (cpu_idle_force_poll || tick_check_broadcast_expired())
cpu_idle_poll();
else
cpu_idle_call();
Though. That keeps the polling case separate from the actual idle
function.
And when you do that; you can also push down the
current_clr_polling_and_test() muck so it doesn't cover the actual
cpuidle policy code.