1. 07 2月, 2014 1 次提交
    • P
      tick: Introduce hrtimer based broadcast · 5d1638ac
      Preeti U Murthy 提交于
      On some architectures, in certain CPU deep idle states the local timers stop.
      An external clock device is used to wakeup these CPUs. The kernel support for the
      wakeup of these CPUs is provided by the tick broadcast framework by using the
      external clock device as the wakeup source.
      
      However not all implementations of architectures provide such an external
      clock device. This patch includes support in the broadcast framework to handle
      the wakeup of the CPUs in deep idle states on such systems by queuing a hrtimer
      on one of the CPUs, which is meant to handle the wakeup of CPUs in deep idle states.
      
      This patchset introduces a pseudo clock device which can be registered by the
      archs as tick_broadcast_device in the absence of a real external clock
      device. Once registered, the broadcast framework will work as is for these
      architectures as long as the archs take care of the BROADCAST_ENTER
      notification failing for one of the CPUs. This CPU is made the stand by CPU to
      handle wakeup of the CPUs in deep idle and it *must not enter deep idle states*.
      
      The CPU with the earliest wakeup is chosen to be this CPU. Hence this way the
      stand by CPU dynamically moves around and so does the hrtimer which is queued
      to trigger at the next earliest wakeup time. This is consistent with the case where
      an external clock device is present. The smp affinity of this clock device is
      set to the CPU with the earliest wakeup. This patchset handles the hotplug of
      the stand by CPU as well by moving the hrtimer on to the CPU handling the CPU_DEAD
      notification.
      
      Originally-from: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NPreeti U Murthy <preeti@linux.vnet.ibm.com>
      Cc: deepthi@linux.vnet.ibm.com
      Cc: paulmck@linux.vnet.ibm.com
      Cc: fweisbec@gmail.com
      Cc: paulus@samba.org
      Cc: srivatsa.bhat@linux.vnet.ibm.com
      Cc: svaidy@linux.vnet.ibm.com
      Cc: peterz@infradead.org
      Cc: benh@kernel.crashing.org
      Cc: rafael.j.wysocki@intel.com
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lkml.kernel.org/r/20140207080632.17187.80532.stgit@preeti.in.ibm.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      5d1638ac
  2. 13 6月, 2013 1 次提交
  3. 30 5月, 2013 1 次提交
    • C
      power: Add option to log time spent in suspend · 5c83545f
      Colin Cross 提交于
      Below is a patch from android kernel that maintains a histogram of
      suspend times. Please review and provide feedback.
      
      Statistices on the time spent in suspend are kept in
      /sys/kernel/debug/sleep_time.
      
      Cc: Android Kernel Team <kernel-team@android.com>
      Cc: Colin Cross <ccross@android.com>
      Cc: Todd Poynor <toddpoynor@google.com>
      Cc: San Mehat <san@google.com>
      Cc: Benoit Goby <benoit@android.com>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NColin Cross <ccross@android.com>
      Signed-off-by: NTodd Poynor <toddpoynor@google.com>
      [zoran.markovic@linaro.org: Re-formatted suspend time table to better
      fit expected values. Moved accounting of suspend time into timekeeping
      core. Removed CONFIG_SUSPEND_TIME flag and made the feature conditional
      on CONFIG_DEBUG_FS. Changed the file name to sleep_time to better fit
      terminology in timekeeping core. Changed seq_printf to seq_puts. Tweaked
      commit message]
      Signed-off-by: NZoran Markovic <zoran.markovic@linaro.org>
      Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
      5c83545f
  4. 01 11月, 2012 1 次提交
  5. 27 4月, 2011 1 次提交
  6. 02 2月, 2011 1 次提交
    • R
      posix clocks: Introduce dynamic clocks · 0606f422
      Richard Cochran 提交于
      This patch adds support for adding and removing posix clocks. The
      clock lifetime cycle is patterned after usb devices. Each clock is
      represented by a standard character device. In addition, the driver
      may optionally implement custom character device operations.
      
      The posix clock and timer system calls listed below now work with
      dynamic posix clocks, as well as the traditional static clocks.
      The following system calls are affected:
      
         - clock_adjtime (brand new syscall)
         - clock_gettime
         - clock_getres
         - clock_settime
         - timer_create
         - timer_delete
         - timer_gettime
         - timer_settime
      
      [ tglx: Adapted to the posix-timer cleanup. Moved clock_posix_dynamic
        	to posix-clock.c and made all referenced functions static ]
      Signed-off-by: NRichard Cochran <richard.cochran@omicron.at>
      Acked-by: NJohn Stultz <johnstul@us.ibm.com>
      LKML-Reference: <20110201134420.164172635@linutronix.de>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      0606f422
  7. 24 9月, 2009 1 次提交
    • Z
      time: add function to convert between calendar time and broken-down time for universal use · 57f1f087
      Zhaolei 提交于
      There are many similar code in kernel for one object: convert time between
      calendar time and broken-down time.
      
      Here is some source I found:
        fs/ncpfs/dir.c
        fs/smbfs/proc.c
        fs/fat/misc.c
        fs/udf/udftime.c
        fs/cifs/netmisc.c
        net/netfilter/xt_time.c
        drivers/scsi/ips.c
        drivers/input/misc/hp_sdc_rtc.c
        drivers/rtc/rtc-lib.c
        arch/ia64/hp/sim/boot/fw-emu.c
        arch/m68k/mac/misc.c
        arch/powerpc/kernel/time.c
        arch/parisc/include/asm/rtc.h
        ...
      
      We can make a common function for this type of conversion, At least we
      can get following benefit:
      
      1: Make kernel simple and unify
      2: Easy to fix bug in converting code
      3: Reduce clone of code in future
         For example, I'm trying to make ftrace display walltime,
         this patch will make me easy.
      
      This code is based on code from glibc-2.6
      Signed-off-by: NZhao Lei <zhaolei@cn.fujitsu.com>
      Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Andi Kleen <andi@firstfloor.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      57f1f087
  8. 16 2月, 2009 1 次提交
  9. 13 10月, 2007 1 次提交
  10. 09 5月, 2007 1 次提交
  11. 17 2月, 2007 6 次提交
    • I
      [PATCH] Add debugging feature /proc/timer_list · 289f480a
      Ingo Molnar 提交于
      add /proc/timer_list, which prints all currently pending (high-res) timers,
      all clock-event sources and their parameters in a human-readable form.
      
      Sample output:
      
      Timer List Version: v0.1
      HRTIMER_MAX_CLOCK_BASES: 2
      now at 4246046273872 nsecs
      
      cpu: 0
       clock 0:
        .index:      0
        .resolution: 1 nsecs
        .get_time:   ktime_get_real
        .offset:     1273998312645738432 nsecs
      active timers:
       clock 1:
        .index:      1
        .resolution: 1 nsecs
        .get_time:   ktime_get
        .offset:     0 nsecs
      active timers:
       #0: <f5a90ec8>, hrtimer_sched_tick, hrtimer_stop_sched_tick, swapper/0
       # expires at 4246432689566 nsecs [in 386415694 nsecs]
       #1: <f5a90ec8>, hrtimer_wakeup, do_nanosleep, pcscd/2050
       # expires at 4247018194689 nsecs [in 971920817 nsecs]
       #2: <f5a90ec8>, hrtimer_wakeup, do_nanosleep, irqbalance/1909
       # expires at 4247351358392 nsecs [in 1305084520 nsecs]
       #3: <f5a90ec8>, hrtimer_wakeup, do_nanosleep, crond/2157
       # expires at 4249097614968 nsecs [in 3051341096 nsecs]
       #4: <f5a90ec8>, it_real_fn, do_setitimer, syslogd/1888
       # expires at 4251329900926 nsecs [in 5283627054 nsecs]
        .expires_next   : 4246432689566 nsecs
        .hres_active    : 1
        .check_clocks   : 0
        .nr_events      : 31306
        .idle_tick      : 4246020791890 nsecs
        .tick_stopped   : 1
        .idle_jiffies   : 986504
        .idle_calls     : 40700
        .idle_sleeps    : 36014
        .idle_entrytime : 4246019418883 nsecs
        .idle_sleeptime : 4178181972709 nsecs
      
      cpu: 1
       clock 0:
        .index:      0
        .resolution: 1 nsecs
        .get_time:   ktime_get_real
        .offset:     1273998312645738432 nsecs
      active timers:
       clock 1:
        .index:      1
        .resolution: 1 nsecs
        .get_time:   ktime_get
        .offset:     0 nsecs
      active timers:
       #0: <f5a90ec8>, hrtimer_sched_tick, hrtimer_restart_sched_tick, swapper/0
       # expires at 4246050084568 nsecs [in 3810696 nsecs]
       #1: <f5a90ec8>, hrtimer_wakeup, do_nanosleep, atd/2227
       # expires at 4261010635003 nsecs [in 14964361131 nsecs]
       #2: <f5a90ec8>, hrtimer_wakeup, do_nanosleep, smartd/2332
       # expires at 5469485798970 nsecs [in 1223439525098 nsecs]
        .expires_next   : 4246050084568 nsecs
        .hres_active    : 1
        .check_clocks   : 0
        .nr_events      : 24043
        .idle_tick      : 4246046084568 nsecs
        .tick_stopped   : 0
        .idle_jiffies   : 986510
        .idle_calls     : 26360
        .idle_sleeps    : 22551
        .idle_entrytime : 4246043874339 nsecs
        .idle_sleeptime : 4170763761184 nsecs
      
      tick_broadcast_mask: 00000003
      event_broadcast_mask: 00000001
      
      CPU#0's local event device:
      
      Clock Event Device: lapic
       capabilities:   0000000e
       max_delta_ns:   807385544
       min_delta_ns:   1443
       mult:           44624025
       shift:          32
       set_next_event: lapic_next_event
       set_mode:       lapic_timer_setup
       event_handler:  hrtimer_interrupt
        .installed:  1
        .expires:    4246432689566 nsecs
      
      CPU#1's local event device:
      
      Clock Event Device: lapic
       capabilities:   0000000e
       max_delta_ns:   807385544
       min_delta_ns:   1443
       mult:           44624025
       shift:          32
       set_next_event: lapic_next_event
       set_mode:       lapic_timer_setup
       event_handler:  hrtimer_interrupt
        .installed:  1
        .expires:    4246050084568 nsecs
      
      Clock Event Device: hpet
       capabilities:   00000007
       max_delta_ns:   2147483647
       min_delta_ns:   3352
       mult:           61496110
       shift:          32
       set_next_event: hpet_next_event
       set_mode:       hpet_set_mode
       event_handler:  handle_nextevt_broadcast
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      289f480a
    • I
      [PATCH] Add debugging feature /proc/timer_stat · 82f67cd9
      Ingo Molnar 提交于
      Add /proc/timer_stats support: debugging feature to profile timer expiration.
      Both the starting site, process/PID and the expiration function is captured.
      This allows the quick identification of timer event sources in a system.
      
      Sample output:
      
      # echo 1 > /proc/timer_stats
      # cat /proc/timer_stats
      Timer Stats Version: v0.1
      Sample period: 4.010 s
        24,     0 swapper          hrtimer_stop_sched_tick (hrtimer_sched_tick)
        11,     0 swapper          sk_reset_timer (tcp_delack_timer)
         6,     0 swapper          hrtimer_stop_sched_tick (hrtimer_sched_tick)
         2,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
        17,     0 swapper          hrtimer_restart_sched_tick (hrtimer_sched_tick)
         2,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
         4,  2050 pcscd            do_nanosleep (hrtimer_wakeup)
         5,  4179 sshd             sk_reset_timer (tcp_write_timer)
         4,  2248 yum-updatesd     schedule_timeout (process_timeout)
        18,     0 swapper          hrtimer_restart_sched_tick (hrtimer_sched_tick)
         3,     0 swapper          sk_reset_timer (tcp_delack_timer)
         1,     1 swapper          neigh_table_init_no_netlink (neigh_periodic_timer)
         2,     1 swapper          e1000_up (e1000_watchdog)
         1,     1 init             schedule_timeout (process_timeout)
      100 total events, 25.24 events/sec
      
      [ cleanups and hrtimers support from Thomas Gleixner <tglx@linutronix.de> ]
      [bunk@stusta.de: nr_entries can become static]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      82f67cd9
    • T
      [PATCH] tick-management: dyntick / highres functionality · 79bf2bb3
      Thomas Gleixner 提交于
      With Ingo Molnar <mingo@elte.hu>
      
      Add functions to provide dynamic ticks and high resolution timers.  The code
      which keeps track of jiffies and handles the long idle periods is shared
      between tick based and high resolution timer based dynticks.  The dyntick
      functionality can be disabled on the kernel commandline.  Provide also the
      infrastructure to support high resolution timers.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      79bf2bb3
    • T
      [PATCH] tick-management: broadcast functionality · f8381cba
      Thomas Gleixner 提交于
      With Ingo Molnar <mingo@elte.hu>
      
      Add broadcast functionality, so per cpu clock event devices can be registered
      as dummy devices or switched from/to broadcast on demand.  The broadcast
      function distributes the events via the broadcast function of the clock event
      device.  This is primarily designed to replace the switch apic timer to / from
      IPI in power states, where the apic stops.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f8381cba
    • T
      [PATCH] tick-management: core functionality · 906568c9
      Thomas Gleixner 提交于
      With Ingo Molnar <mingo@elte.hu>
      
      The tick-management code is the first user of the clockevents layer.  It takes
      clock event devices from the clock events core and uses them to provide the
      periodic tick.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      906568c9
    • T
      [PATCH] clockevents: add core functionality · d316c57f
      Thomas Gleixner 提交于
      Architectures register their clock event devices, in the clock events core.
      Users of the clockevents core can get clock event devices for their use.  The
      clockevents core code provides notification mechanisms for various clock
      related management events.
      
      This allows to control the clock event devices without the architectures
      having to worry about the details of function assignment.  This is also a
      preliminary for high resolution timers and dynamic ticks to allow the core
      code to control the clock functionality without intrusive changes to the
      architecture code.
      
      [Fixes-by: Ingo Molnar <mingo@elte.hu>]
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d316c57f
  12. 01 10月, 2006 1 次提交
  13. 27 6月, 2006 1 次提交