nohz: Remove ts->Einidle checks before restarting the tick
authorFrederic Weisbecker <fweisbec@gmail.com>
Tue, 24 Jan 2012 17:59:43 +0000 (18:59 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 15 Feb 2012 14:23:09 +0000 (15:23 +0100)
ts->inidle is set by tick_nohz_idle_enter() and unset by
tick_nohz_idle_exit(). However these two calls are assumed
to be always paired. This means that by the time we call
tick_nohz_idle_exit(), ts->inidle is supposed to be always
set to 1.

Remove the checks for ts->inidle in tick_nohz_idle_exit().
This simplifies a bit the code and improves its debuggability
(ie: ensure the call is paired with a tick_nohz_idle_enter()
call).

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Reviewed-by: Yong Zhang <yong.zhang0@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Ingo Molnar <mingo@elte.hu>
Link: http://lkml.kernel.org/r/1327427984-23282-2-git-send-email-fweisbec@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/time/tick-sched.c

index 8cfffd9d9ce991e089260a90a699acf47f6ef0f8..3526038f28361b7e4241818cafb8a9a978310e0c 100644 (file)
@@ -558,20 +558,21 @@ void tick_nohz_idle_exit(void)
 
        local_irq_disable();
 
-       if (ts->idle_active || (ts->inidle && ts->tick_stopped))
+       WARN_ON_ONCE(!ts->inidle);
+
+       ts->inidle = 0;
+
+       if (ts->idle_active || ts->tick_stopped)
                now = ktime_get();
 
        if (ts->idle_active)
                tick_nohz_stop_idle(cpu, now);
 
-       if (!ts->inidle || !ts->tick_stopped) {
-               ts->inidle = 0;
+       if (!ts->tick_stopped) {
                local_irq_enable();
                return;
        }
 
-       ts->inidle = 0;
-
        /* Update jiffies first */
        select_nohz_load_balancer(0);
        tick_do_update_jiffies64(now);