An error occurred fetching the project authors.
  1. 02 Jun, 2015 1 commit
  2. 22 Apr, 2015 1 commit
    • Thomas Gleixner's avatar
      tick: Nohz: Rework next timer evaluation · c1ad348b
      Thomas Gleixner authored
      The evaluation of the next timer in the nohz code is based on jiffies
      while all the tick internals are nano seconds based. We have also to
      convert hrtimer nanoseconds to jiffies in the !highres case. That's
      just wrong and introduces interesting corner cases.
      
      Turn it around and convert the next timer wheel timer expiry and the
      rcu event to clock monotonic and base all calculations on
      nanoseconds. That identifies the case where no timer is pending
      clearly with an absolute expiry value of KTIME_MAX.
      
      Makes the code more readable and gets rid of the jiffies magic in the
      nohz code.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Preeti U Murthy <preeti@linux.vnet.ibm.com>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Josh Triplett <josh@joshtriplett.org>
      Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Link: http://lkml.kernel.org/r/20150414203502.184198593@linutronix.deSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      c1ad348b
  3. 03 Apr, 2015 4 commits
  4. 02 Apr, 2015 1 commit
    • Ingo Molnar's avatar
      tick: Further simplify tick-internal.h · 3ae7a939
      Ingo Molnar authored
      Move the broadcasting related section to the GENERIC_CLOCKEVENTS=y
      section - this also solves build failures on architectures that
      don't use generic clockevents yet.
      
      Also standardize include file style to make it easier to read, and
      use nesting depth aware preprocessor directives to make future merges
      easier.
      
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      3ae7a939
  5. 01 Apr, 2015 8 commits
  6. 27 Mar, 2015 1 commit
  7. 13 Sep, 2014 1 commit
    • Frederic Weisbecker's avatar
      nohz: Move nohz full init call to tick init · a80e49e2
      Frederic Weisbecker authored
      This way we unbloat a bit main.c and more importantly we initialize
      nohz full after init_IRQ(). This dependency will be needed in further
      patches because nohz full needs irq work to raise its own IRQ.
      Information about the support for this ability on ARM64 is obtained on
      init_IRQ() which initialize the pointer to __smp_call_function.
      
      Since tick_init() is called right after init_IRQ(), this is a good place
      to call tick_nohz_init() and prepare for that dependency.
      Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      a80e49e2
  8. 23 Jul, 2014 1 commit
  9. 07 Feb, 2014 3 commits
  10. 23 Dec, 2013 1 commit
    • John Stultz's avatar
      tick/timekeeping: Call update_wall_time outside the jiffies lock · 47a1b796
      John Stultz authored
      Since the xtime lock was split into the timekeeping lock and
      the jiffies lock, we no longer need to call update_wall_time()
      while holding the jiffies lock.
      
      Thus, this patch splits update_wall_time() out from do_timer().
      
      This allows us to get away from calling clock_was_set_delayed()
      in update_wall_time() and instead use the standard clock_was_set()
      call that previously would deadlock, as it causes the jiffies lock
      to be acquired.
      
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      47a1b796
  11. 02 Dec, 2013 1 commit
    • Frederic Weisbecker's avatar
      nohz: Convert a few places to use local per cpu accesses · e8fcaa5c
      Frederic Weisbecker authored
      A few functions use remote per CPU access APIs when they
      deal with local values.
      
      Just do the right conversion to improve performance, code
      readability and debug checks.
      
      While at it, lets extend some of these function names with *_this_cpu()
      suffix in order to display their purpose more clearly.
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      e8fcaa5c
  12. 18 Oct, 2013 1 commit
  13. 28 May, 2013 1 commit
  14. 16 May, 2013 3 commits
  15. 22 Mar, 2013 1 commit
  16. 07 Mar, 2013 1 commit
  17. 13 Nov, 2012 1 commit
  18. 08 Sep, 2011 1 commit
  19. 26 Feb, 2011 1 commit
    • Thomas Gleixner's avatar
      clockevents: Prevent oneshot mode when broadcast device is periodic · 3a142a06
      Thomas Gleixner authored
      When the per cpu timer is marked CLOCK_EVT_FEAT_C3STOP, then we only
      can switch into oneshot mode, when the backup broadcast device
      supports oneshot mode as well. Otherwise we would try to switch the
      broadcast device into an unsupported mode unconditionally. This went
      unnoticed so far as the current available broadcast devices support
      oneshot mode. Seth unearthed this problem while debugging and working
      around an hpet related BIOS wreckage.
      
      Add the necessary check to tick_is_oneshot_available().
      Reported-and-tested-by: default avatarSeth Forshee <seth.forshee@canonical.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      LKML-Reference: <alpine.LFD.2.00.1102252231200.2701@localhost6.localdomain6>
      Cc: stable@kernel.org # .21 ->
      3a142a06
  20. 01 Feb, 2011 1 commit
  21. 31 Jan, 2011 1 commit
  22. 14 Dec, 2009 1 commit
  23. 17 Oct, 2008 1 commit
    • Thomas Gleixner's avatar
      NOHZ: restart tick device from irq_enter() · fb02fbc1
      Thomas Gleixner authored
      We did not restart the tick device from irq_enter() to avoid double
      reprogramming and extra events in the return immediate to idle case.
      
      But long lasting softirqs can lead to a situation where jiffies become
      stale:
      
      idle()
        tick stopped (reprogrammed to next pending timer)
        halt()
         interrupt
           jiffies updated from irq_enter()
           interrupt handler
           softirq function 1 runs 20ms
           softirq function 2 arms a 10ms timer with a stale jiffies value
           jiffies updated from irq_exit()
           timer wheel has now an already expired timer
           (the one added in function 2)
           timer fires and timer softirq runs
      
      This was discovered when debugging a timer problem which happend only
      when the ath5k driver is active. The debugging proved that there is a
      softirq function running for more than 20ms, which is a bug by itself.
      
      To solve this we restart the tick timer right from irq_enter(), but do
      not go through the other functions which are necessary to return from
      idle when need_resched() is set.
      Reported-by: default avatarElias Oltmanns <eo@nebensachen.de>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarElias Oltmanns <eo@nebensachen.de>
      fb02fbc1
  24. 23 Sep, 2008 3 commits
    • Ingo Molnar's avatar
      timers: fix build error in !oneshot case · f8e256c6
      Ingo Molnar authored
       kernel/time/tick-common.c: In function ‘tick_setup_periodic’:
       kernel/time/tick-common.c:113: error: implicit declaration of function ‘tick_broadcast_oneshot_active’
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f8e256c6
    • Thomas Gleixner's avatar
      clockevents: prevent mode mismatch on cpu online · 27ce4cb4
      Thomas Gleixner authored
      Impact: timer hang on CPU online observed on AMD C1E systems
      
      When a CPU is brought online then the broadcast machinery can
      be in the one shot state already. Check this and setup the timer 
      device of the new CPU in one shot mode so the broadcast code
      can pick up the next_event value correctly.
      
      Another AMD C1E oddity, as we switch to broadcast immediately and
      not after the full bring up via the ACPI cpu idle code.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      27ce4cb4
    • Thomas Gleixner's avatar
      clockevents: prevent cpu online to interfere with nohz · 6441402b
      Thomas Gleixner authored
      Impact: rare hang which can be triggered on CPU online.
      
      tick_do_timer_cpu keeps track of the CPU which updates jiffies
      via do_timer. The value -1 is used to signal, that currently no
      CPU is doing this. There are two cases, where the variable can 
      have this state:
      
       boot:
          necessary for systems where the boot cpu id can be != 0
      
       nohz long idle sleep:
          When the CPU which did the jiffies update last goes into
          a long idle sleep it drops the update jiffies duty so
          another CPU which is not idle can pick it up and keep
          jiffies going.
      
      Using the same value for both situations is wrong, as the CPU online
      code can see the -1 state when the timer of the newly onlined CPU is
      setup. The setup for a newly onlined CPU goes through periodic mode
      and can pick up the do_timer duty without being aware of the nohz /
      highres mode of the already running system.
      
      Use two separate states and make them constants to avoid magic
      numbers confusion. 
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      6441402b