12 Feb, 2011

1 commit


20 Jan, 2011

1 commit

  • When NOHZ=y and high res timers are disabled (via cmdline or
    Kconfig) tick_nohz_switch_to_nohz() will notify the user about
    switching into NOHZ mode. Nothing is printed for the case where
    HIGH_RES_TIMERS=y. Fix this for the HIGH_RES_TIMERS=y case by
    duplicating the printk from the low res NOHZ path in the high
    res NOHZ path.

    This confused me since I was thinking 'dmesg | grep -i NOHZ' would
    tell me if NOHZ was enabled, but if I have hrtimers there is
    nothing.

    Signed-off-by: Stephen Boyd
    Acked-by: Thomas Gleixner
    Cc: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Stephen Boyd
     

16 Jan, 2011

1 commit

  • …linus' and 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    rcu: avoid pointless blocked-task warnings
    rcu: demote SRCU_SYNCHRONIZE_DELAY from kernel-parameter status
    rtmutex: Fix comment about why new_owner can be NULL in wake_futex_pi()

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, olpc: Add missing Kconfig dependencies
    x86, mrst: Set correct APB timer IRQ affinity for secondary cpu
    x86: tsc: Fix calibration refinement conditionals to avoid divide by zero
    x86, ia64, acpi: Clean up x86-ism in drivers/acpi/numa.c

    * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    timekeeping: Make local variables static
    time: Rename misnamed minsec argument of clocks_calc_mult_shift()

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    tracing: Remove syscall_exit_fields
    tracing: Only process module tracepoints once
    perf record: Add "nodelay" mode, disabled by default
    perf sched: Fix list of events, dropping unsupported ':r' modifier
    Revert "perf tools: Emit clearer message for sys_perf_event_open ENOENT return"
    perf top: Fix annotate segv
    perf evsel: Fix order of event list deletion

    Linus Torvalds
     

14 Jan, 2011

3 commits

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)
    Documentation/trace/events.txt: Remove obsolete sched_signal_send.
    writeback: fix global_dirty_limits comment runtime -> real-time
    ppc: fix comment typo singal -> signal
    drivers: fix comment typo diable -> disable.
    m68k: fix comment typo diable -> disable.
    wireless: comment typo fix diable -> disable.
    media: comment typo fix diable -> disable.
    remove doc for obsolete dynamic-printk kernel-parameter
    remove extraneous 'is' from Documentation/iostats.txt
    Fix spelling milisec -> ms in snd_ps3 module parameter description
    Fix spelling mistakes in comments
    Revert conflicting V4L changes
    i7core_edac: fix typos in comments
    mm/rmap.c: fix comment
    sound, ca0106: Fix assignment to 'channel'.
    hrtimer: fix a typo in comment
    init/Kconfig: fix typo
    anon_inodes: fix wrong function name in comment
    fix comment typos concerning "consistent"
    poll: fix a typo in comment
    ...

    Fix up trivial conflicts in:
    - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)
    - fs/ext4/ext4.h

    Also fix missed 'diabled' typo in drivers/net/bnx2x/bnx2x.h while at it.

    Linus Torvalds
     
  • MONOTONIC_RAW clock timestamps are ideally suited for frequency
    calculation and also fit well into the original NTP hardpps design. Now
    phase and frequency can be adjusted separately: the former based on
    REALTIME clock and the latter based on MONOTONIC_RAW clock.

    A new function getnstime_raw_and_real is added to timekeeping subsystem to
    capture both timestamps at the same time and atomically.

    Signed-off-by: Alexander Gordeev
    Acked-by: John Stultz
    Cc: Rodolfo Giometti
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Gordeev
     
  • This commit adds hardpps() implementation based upon the original one from
    the NTPv4 reference kernel code from David Mills. However, it is highly
    optimized towards very fast syncronization and maximum stickness to PPS
    signal. The typical error is less then a microsecond.

    To make it sync faster I had to throw away exponential phase filter so
    that the full phase offset is corrected immediately. Then I also had to
    throw away median phase filter because it gives a bigger error itself if
    used without exponential filter.

    Maybe we will find an appropriate filtering scheme in the future but it's
    not necessary if the signal quality is ok.

    Signed-off-by: Alexander Gordeev
    Acked-by: John Stultz
    Cc: Rodolfo Giometti
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Gordeev
     

12 Jan, 2011

2 commits


08 Jan, 2011

1 commit

  • * 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (30 commits)
    gameport: use this_cpu_read instead of lookup
    x86: udelay: Use this_cpu_read to avoid address calculation
    x86: Use this_cpu_inc_return for nmi counter
    x86: Replace uses of current_cpu_data with this_cpu ops
    x86: Use this_cpu_ops to optimize code
    vmstat: User per cpu atomics to avoid interrupt disable / enable
    irq_work: Use per cpu atomics instead of regular atomics
    cpuops: Use cmpxchg for xchg to avoid lock semantics
    x86: this_cpu_cmpxchg and this_cpu_xchg operations
    percpu: Generic this_cpu_cmpxchg() and this_cpu_xchg support
    percpu,x86: relocate this_cpu_add_return() and friends
    connector: Use this_cpu operations
    xen: Use this_cpu_inc_return
    taskstats: Use this_cpu_ops
    random: Use this_cpu_inc_return
    fs: Use this_cpu_inc_return in buffer.c
    highmem: Use this_cpu_xx_return() operations
    vmstat: Use this_cpu_inc_return for vm statistics
    x86: Support for this_cpu_add, sub, dec, inc_return
    percpu: Generic support for this_cpu_add, sub, dec, inc_return
    ...

    Fixed up conflicts: in arch/x86/kernel/{apic/nmi.c, apic/x2apic_uv_x.c, process.c}
    as per Tejun.

    Linus Torvalds
     

07 Jan, 2011

1 commit

  • * 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (416 commits)
    ARM: DMA: add support for DMA debugging
    ARM: PL011: add DMA burst threshold support for ST variants
    ARM: PL011: Add support for transmit DMA
    ARM: PL011: Ensure IRQs are disabled in UART interrupt handler
    ARM: PL011: Separate hardware FIFO size from TTY FIFO size
    ARM: PL011: Allow better handling of vendor data
    ARM: PL011: Ensure error flags are clear at startup
    ARM: PL011: include revision number in boot-time port printk
    ARM: vexpress: add sched_clock() for Versatile Express
    ARM i.MX53: Make MX53 EVK bootable
    ARM i.MX53: Some bug fix about MX53 MSL code
    ARM: 6607/1: sa1100: Update platform device registration
    ARM: 6606/1: sa1100: Fix platform device registration
    ARM i.MX51: rename IPU irqs
    ARM i.MX51: Add ipu clock support
    ARM: imx/mx27_3ds: Add PMIC support
    ARM: DMA: Replace page_to_dma()/dma_to_page() with pfn_to_dma()/dma_to_pfn()
    mx51: fix usb clock support
    MX51: Add support for usb host 2
    arch/arm/plat-mxc/ehci.c: fix errors/typos
    ...

    Linus Torvalds
     

23 Dec, 2010

1 commit

  • Russell King reports:
    | On the ARM dev boards, we have a 32-bit counter running at 24MHz. Calling
    | clocks_calc_mult_shift(&mult, &shift, 24MHz, NSEC_PER_SEC, 60) gives
    | us a multiplier of 2796202666 and a shift of 26.
    |
    | Over a large counter delta, this produces an error - lets take a count
    | from 362976315 to 4280663372:
    |
    | (4280663372-362976315) * 2796202666 / 2^26 - (4280663372-362976315) * (1000/24)
    | => -38.91872422891230269990
    |
    | Can we do better?
    |
    | (4280663372-362976315) * 2796202667 / 2^26 - (4280663372-362976315) * (1000/24)
    | 19.45936211449532822051
    |
    | which is about twice as good as the 2796202666 multiplier.
    |
    | Looking at the equivalent divisions obtained, 2796202666 / 2^26 gives
    | 41.66666665673255920410ns per tick, whereas 2796202667 / 2^26 gives
    | 41.66666667163372039794ns. The actual value wanted is 1000/24 =
    | 41.66666666666666666666ns.

    Fix this by ensuring we round to nearest when calculating the
    multiplier.

    Signed-off-by: John Stultz
    Tested-by: Santosh Shilimkar
    Tested-by: Will Deacon
    Tested-by: Mikael Pettersson
    Tested-by: Eric Miao
    Tested-by: Olof Johansson
    Tested-by: Jamie Iles
    Signed-off-by: Russell King

    john stultz
     

17 Dec, 2010

1 commit

  • __get_cpu_var() can be replaced with this_cpu_read and will then use a
    single read instruction with implied address calculation to access the
    correct per cpu instance.

    However, the address of a per cpu variable passed to __this_cpu_read()
    cannot be determined (since it's an implied address conversion through
    segment prefixes). Therefore apply this only to uses of __get_cpu_var
    where the address of the variable is not used.

    Cc: Pekka Enberg
    Cc: Hugh Dickins
    Cc: Thomas Gleixner
    Acked-by: H. Peter Anvin
    Signed-off-by: Christoph Lameter
    Signed-off-by: Tejun Heo

    Christoph Lameter
     

11 Dec, 2010

1 commit


02 Nov, 2010

1 commit

  • "gadget", "through", "command", "maintain", "maintain", "controller", "address",
    "between", "initiali[zs]e", "instead", "function", "select", "already",
    "equal", "access", "management", "hierarchy", "registration", "interest",
    "relative", "memory", "offset", "already",

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Jiri Kosina

    Uwe Kleine-König
     

21 Oct, 2010

2 commits

  • Replace sizeof(buffer)/sizeof(buffer[0]) with ARRAY_SIZE(buffer) in
    kernel/time/timecompare.c

    Signed-off-by: Nikitas Angelinas
    Signed-off-by: Andrew Morton
    Signed-off-by: Thomas Gleixner

    Nikitas Angelinas
     
  • When the clocksource is not a multiple of HZ, the clock will be off. For
    acpi_pm, HZ=1000 the error is 127.111 ppm:

    The rounding of cycle_interval ends up generating a false error term in
    ntp_error accumulation since xtime_interval is not exactly 1/HZ. So, we
    subtract out the error caused by the rounding.

    This has been visible since 2.6.32-rc2
    commit a092ff0f90cae22b2ac8028ecd2c6f6c1a9e4601
    time: Implement logarithmic time accumulation
    That commit raised NTP_INTERVAL_FREQ and exposed the rounding error.

    testing tool: http://n1.taur.dk/permanent/testpmt.c
    Also tested with ntpd and a frequency counter.

    Signed-off-by: Kasper Pedersen
    Acked-by: john stultz
    Cc: John Kacur
    Cc: Clark Williams
    Cc: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Thomas Gleixner

    Kasper Pedersen
     

10 Sep, 2010

1 commit

  • Clamp update interval to reduce PLL gain with low sampling rate (e.g.
    intermittent network connection) to avoid instability.

    The clamp roughly corresponds to the loop time constant, it's 8 * poll
    interval for SHIFT_PLL 2 and 32 * poll interval for SHIFT_PLL 4. This
    gives good results without affecting the gain in normal conditions where
    ntpd skips only up to seven consecutive samples.

    Signed-off-by: Miroslav Lichvar
    Acked-by: john stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Miroslav Lichvar
     

14 Aug, 2010

1 commit

  • Early 4.3 versions of gcc apparently aggressively optimize the raw
    time accumulation loop, replacing it with a divide.

    On 32bit systems, this causes the following link errors:
    undefined reference to `__umoddi3'
    undefined reference to `__udivdi3'

    The gcc issue has been fixed in 4.4 and greater.

    This patch replaces the accumulation loop with a do_div, as suggested
    by Linus.

    Signed-off-by: John Stultz
    CC: Jason Wessel
    CC: Larry Finger
    CC: Ingo Molnar
    CC: Linus Torvalds
    Signed-off-by: Linus Torvalds

    John Stultz
     

13 Aug, 2010

1 commit

  • The tv_nsec is a long and when added to the shifted interval it can wrap
    and become negative which later causes looping problems in the
    getrawmonotonic(). The edge case occurs when the system has slept for
    a short period of time of ~2 seconds.

    A trace printk of the values in this patch illustrate the problem:

    ftrace time stamp: log
    43.716079: logarithmic_accumulation: raw: 3d0913 tv_nsec d687faa
    43.718513: logarithmic_accumulation: raw: 3d0913 tv_nsec da588bd
    43.722161: logarithmic_accumulation: raw: 3d0913 tv_nsec de291d0
    46.349925: logarithmic_accumulation: raw: 7a122600 tv_nsec e1f9ae3
    46.349930: logarithmic_accumulation: raw: 1e848980 tv_nsec 8831c0e3

    The kernel starts looping at 46.349925 in the getrawmonotonic() due to
    the negative value from adding the raw value to tv_nsec.

    A simple solution is to accumulate into a u64, and then normalize it
    to a timespec_t.

    Signed-off-by: Jason Wessel
    [ Reworked variable names and simplified some of the code. - John ]
    Signed-off-by: John Stultz
    Cc: Thomas Gleixner
    Cc: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    Jason Wessel
     

07 Aug, 2010

3 commits

  • …x/kernel/git/tip/linux-2.6-tip

    * 'timers-timekeeping-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    um: Fix read_persistent_clock fallout
    kgdb: Do not access xtime directly
    powerpc: Clean up obsolete code relating to decrementer and timebase
    powerpc: Rework VDSO gettimeofday to prevent time going backwards
    clocksource: Add __clocksource_updatefreq_hz/khz methods
    x86: Convert common clocksources to use clocksource_register_hz/khz
    timekeeping: Make xtime and wall_to_monotonic static
    hrtimer: Cleanup direct access to wall_to_monotonic
    um: Convert to use read_persistent_clock
    timkeeping: Fix update_vsyscall to provide wall_to_monotonic offset
    powerpc: Cleanup xtime usage
    powerpc: Simplify update_vsyscall
    time: Kill off CONFIG_GENERIC_TIME
    time: Implement timespec_add
    x86: Fix vtime/file timestamp inconsistencies

    Trivial conflicts in Documentation/feature-removal-schedule.txt

    Much less trivial conflicts in arch/powerpc/kernel/time.c resolved as
    per Thomas' earlier merge commit 47916be4e28c ("Merge branch
    'powerpc.cherry-picks' into timers/clocksource")

    Linus Torvalds
     
  • * 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    Documentation: Add timers/timers-howto.txt
    timer: Added usleep_range timer
    Revert "timer: Added usleep[_range] timer"
    clockevents: Remove the per cpu tick skew
    posix_timer: Move copy_to_user(created_timer_id) down in timer_create()
    timer: Added usleep[_range] timer
    timers: Document meaning of deferrable timer

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (27 commits)
    sched: Use correct macro to display sched_child_runs_first in /proc/sched_debug
    sched: No need for bootmem special cases
    sched: Revert nohz_ratelimit() for now
    sched: Reduce update_group_power() calls
    sched: Update rq->clock for nohz balanced cpus
    sched: Fix spelling of sibling
    sched, cpuset: Drop __cpuexit from cpu hotplug callbacks
    sched: Fix the racy usage of thread_group_cputimer() in fastpath_timer_check()
    sched: run_posix_cpu_timers: Don't check ->exit_state, use lock_task_sighand()
    sched: thread_group_cputime: Simplify, document the "alive" check
    sched: Remove the obsolete exit_state/signal hacks
    sched: task_tick_rt: Remove the obsolete ->signal != NULL check
    sched: __sched_setscheduler: Read the RLIMIT_RTPRIO value lockless
    sched: Fix comments to make them DocBook happy
    sched: Fix fix_small_capacity
    powerpc: Exclude arch_sd_sibiling_asym_packing() on UP
    powerpc: Enable asymmetric SMT scheduling on POWER7
    sched: Add asymmetric group packing option for sibling domain
    sched: Fix capacity calculations for SMT4
    sched: Change nohz idle load balancing logic to push model
    ...

    Linus Torvalds
     

05 Aug, 2010

1 commit


04 Aug, 2010

1 commit


03 Aug, 2010

1 commit

  • Historically, Linux has tried to make the regular timer tick on the
    various CPUs not happen at the same time, to avoid contention on
    xtime_lock.

    Nowadays, with the tickless kernel, this contention no longer happens
    since time keeping and updating are done differently. In addition,
    this skew is actually hurting power consumption in a measurable way on
    many-core systems.

    Signed-off-by: Arjan van de Ven
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Arjan van de Ven
     

27 Jul, 2010

6 commits

  • To properly handle clocksources that change frequencies
    at the clocksource->enable() point, this patch adds
    a method that will update the clocksource's mult/shift and
    max_idle_ns values.

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • This patch makes xtime and wall_to_monotonic static, as planned in
    Documentation/feature-removal-schedule.txt. This will allow for
    further cleanups to the timekeeping core.

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • Provides an accessor function to replace hrtimer.c's
    direct access of wall_to_monotonic.

    This will allow wall_to_monotonic to be made static as
    planned in Documentation/feature-removal-schedule.txt

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • update_vsyscall() did not provide the wall_to_monotoinc offset,
    so arch specific implementations tend to reference wall_to_monotonic
    directly. This limits future cleanups in the timekeeping core, so
    this patch fixes the update_vsyscall interface to provide
    wall_to_monotonic, allowing wall_to_monotonic to be made static
    as planned in Documentation/feature-removal-schedule.txt

    Signed-off-by: John Stultz
    Cc: Martin Schwidefsky
    Cc: Anton Blanchard
    Cc: Paul Mackerras
    Cc: Tony Luck
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • Now that all arches have been converted over to use generic time via
    clocksources or arch_gettimeoffset(), we can remove the GENERIC_TIME
    config option and simplify the generic code.

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     
  • After accidentally misusing timespec_add_safe, I wanted to make sure
    we don't accidently trip over that issue again, so I created a simple
    timespec_add() function which we can use to replace the instances
    of timespec_add_safe() that don't want the overflow detection.

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     

22 Jul, 2010

1 commit


17 Jul, 2010

1 commit

  • Norbert reported that nohz_ratelimit() causes his laptop to burn about
    4W (40%) extra. For now back out the change and see if we can adjust
    the power management code to make better decisions.

    Reported-by: Norbert Preining
    Signed-off-by: Peter Zijlstra
    Acked-by: Mike Galbraith
    Cc: Arjan van de Ven
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

12 Jul, 2010

1 commit


03 Jul, 2010

1 commit


01 Jul, 2010

1 commit

  • Commit 0224cf4c5e (sched: Intoduce get_cpu_iowait_time_us())
    broke things by not making sure preemption was indeed disabled
    by the callers of nr_iowait_cpu() which took the iowait value of
    the current cpu.

    This resulted in a heap of preempt warnings. Cure this by making
    nr_iowait_cpu() take a cpu number and fix up the callers to pass
    in the right number.

    Signed-off-by: Peter Zijlstra
    Cc: Arjan van de Ven
    Cc: Sergey Senozhatsky
    Cc: Rafael J. Wysocki
    Cc: Maxim Levitsky
    Cc: Len Brown
    Cc: Pavel Machek
    Cc: Jiri Slaby
    Cc: linux-pm@lists.linux-foundation.org
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

18 Jun, 2010

1 commit

  • Chris Wedgwood reports that 39c0cbe (sched: Rate-limit nohz) causes a
    serial console regression, unresponsiveness, and indeed it does. The
    reason is that the nohz code is skipped even when the tick was already
    stopped before the nohz_ratelimit(cpu) condition changed.

    Move the nohz_ratelimit() check to the other conditions which prevent
    long idle sleeps.

    Reported-by: Chris Wedgwood
    Tested-by: Brian Bloniarz
    Signed-off-by: Mike Galbraith
    Signed-off-by: Peter Zijlstra
    Cc: Jiri Kosina
    Cc: Linus Torvalds
    Cc: Greg KH
    Cc: Alan Cox
    Cc: OGAWA Hirofumi
    Cc: Jef Driesen
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Peter Zijlstra
     

09 Jun, 2010

1 commit

  • In the new push model, all idle CPUs indeed go into nohz mode. There is
    still the concept of idle load balancer (performing the load balancing
    on behalf of all the idle cpu's in the system). Busy CPU kicks the nohz
    balancer when any of the nohz CPUs need idle load balancing.
    The kickee CPU does the idle load balancing on behalf of all idle CPUs
    instead of the normal idle balance.

    This addresses the below two problems with the current nohz ilb logic:
    * the idle load balancer continued to have periodic ticks during idle and
    wokeup frequently, even though it did not have any rebalancing to do on
    behalf of any of the idle CPUs.
    * On x86 and CPUs that have APIC timer stoppage on idle CPUs, this
    periodic wakeup can result in a periodic additional interrupt on a CPU
    doing the timer broadcast.

    Also currently we are migrating the unpinned timers from an idle to the cpu
    doing idle load balancing (when all the cpus in the system are idle,
    there is no idle load balancing cpu and timers get added to the same idle cpu
    where the request was made. So the existing optimization works only on semi idle
    system).

    And In semi idle system, we no longer have periodic ticks on the idle load
    balancer CPU. Using that cpu will add more delays to the timers than intended
    (as that cpu's timer base may not be uptodate wrt jiffies etc). This was
    causing mysterious slowdowns during boot etc.

    For now, in the semi idle case, use the nearest busy cpu for migrating timers
    from an idle cpu. This is good for power-savings anyway.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha
    Signed-off-by: Peter Zijlstra
    Cc: Thomas Gleixner
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Venkatesh Pallipadi
     

20 May, 2010

1 commit

  • * 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    clocksource: Add clocksource_register_hz/khz interface
    posix-cpu-timers: Optimize run_posix_cpu_timers()
    time: Remove xtime_cache
    mqueue: Convert message queue timeout to use hrtimers
    hrtimers: Provide schedule_hrtimeout for CLOCK_REALTIME
    timers: Introduce the concept of timer slack for legacy timers
    ntp: Remove tickadj
    ntp: Make time_adjust static
    time: Add xtime, wall_to_monotonic to feature-removal-schedule
    timer: Try to survive timer callback preempt_count leak
    timer: Split out timer function call
    timer: Print function name for timer callbacks modifying preemption count
    time: Clean up warp_clock()
    cpu-timers: Avoid iterating over all threads in fastpath_timer_check()
    cpu-timers: Change SIGEV_NONE timer implementation
    cpu-timers: Return correct previous timer reload value
    cpu-timers: Cleanup arm_timer()
    cpu-timers: Simplify RLIMIT_CPU handling

    Linus Torvalds
     

10 May, 2010

1 commit

  • How to pick good mult/shift pairs has always been difficult to
    describe to folks writing clocksource drivers, since it requires
    careful tradeoffs in adjustment accuracy vs overflow limits.

    Now, with the clocks_calc_mult_shift function, its much
    easier. However, not many clocksources have converted to using that
    function, and there is still the issue of the max interval length
    assumption being made by each clocksource driver independently.

    So this patch simplifies the registration process by having
    clocksources be registered with a hz/khz value and the registration
    function taking care of setting mult/shift.

    This should take most of the confusion out of writing a clocksource
    driver.

    Additionally it also keeps the shift size tradeoff (more accuracy vs
    longer possible nohz times) centralized so the timekeeping core can
    keep track of the assumptions being made.

    [ tglx: Coding style and comments fixed ]

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz