1. 26 3月, 2008 2 次提交
    • T
      NOHZ: reevaluate idle sleep length after add_timer_on() · 06d8308c
      Thomas Gleixner 提交于
      add_timer_on() can add a timer on a CPU which is currently in a long
      idle sleep, but the timer wheel is not reevaluated by the nohz code on
      that CPU. So a timer can be delayed for quite a long time. This
      triggered a false positive in the clocksource watchdog code.
      
      To avoid this we need to wake up the idle CPU and enforce the
      reevaluation of the timer wheel for the next timer event.
      
      Add a function, which checks a given CPU for idle state, marks the
      idle task with NEED_RESCHED and sends a reschedule IPI to notify the
      other CPU of the change in the timer wheel.
      
      Call this function from add_timer_on().
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Cc: stable@kernel.org
      
      --
       include/linux/sched.h |    6 ++++++
       kernel/sched.c        |   43 +++++++++++++++++++++++++++++++++++++++++++
       kernel/timer.c        |   10 +++++++++-
       3 files changed, 58 insertions(+), 1 deletion(-)
      06d8308c
    • T
      clocksource: revert: use init_timer_deferrable for clocksource_watchdog · 898a19de
      Thomas Gleixner 提交于
      Revert
      
      commit 1077f5a9
      Author: Parag Warudkar <parag.warudkar@gmail.com>
      Date:   Wed Jan 30 13:30:01 2008 +0100
      
          clocksource.c: use init_timer_deferrable for clocksource_watchdog
          
          clocksource_watchdog can use a deferrable timer - reduces wakeups from
          idle per second.
      
      The watchdog timer needs to run with the specified interval. Otherwise
      it will miss the possible wrap of the watchdog clocksource.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: stable@kernel.org
      898a19de
  2. 25 3月, 2008 38 次提交