[GIT PULL] Big timekeeping changes for 3.17

From: John Stultz
Date: Wed Jul 23 2014 - 18:18:11 EST


Hey Thomas, Ingo,

Here is my current 3.17 queue. Its quite large. The main components are:

1) udelay test module / script (David Riley)

2) Updating core timekeeping/ktime infrastructure to be 2038 safe (Me w/
tweaks from tglx)

3) Lots of timespec/ktime_t cleanups in both the core code and by
in-kernel users (tglx)

4) Optimizing the timekeeping data structures for cache layout (tglx)

5) NMI safe accessor to clock monotonic (tglx w/ improvements from
Mathieu Desnoyers)

6) Improved NOHZ freq steering (Me w/ inspiration from Miroslav)

7) New general clocksource/clockevents/sched_clock documentation (Linus
Walleij)


I've run testing w/ x86_64, i386, arm and arm64. Thomas has also done
quite a bit of testing as well (including ppc, ppc64, mips and mips64).

There's a few more things that have been lingering in my inbox that I
have to send as well, but this chunk likely needs the most time in -next
for testing.

Let me know if you have any issues or problems with this set.

thanks
-john


The following changes since commit 1af447bd8cbfb808a320885d214555fb2d32e6e6:

Merge branch 'clockevents/3.17' of
git://git.linaro.org/people/daniel.lezcano/linux into timers/core
(2014-07-23 13:27:23 +0200)

are available in the git repository at:


git://git.linaro.org/people/john.stultz/linux.git fortglx/3.17/time

for you to fetch changes up to 7806f60e1d205db46eca6ad24429b3f86eda2588:

clocksource: document some basic timekeeping concepts (2014-07-23
15:07:13 -0700)

----------------------------------------------------------------
David Riley (2):
kernel: time: Add udelay_test module to validate udelay
tools: add script to test udelay

John Stultz (9):
hrtimer: Cleanup hrtimer accessors to the timekepeing state
ktime: Kill non-scalar ktime_t implementation for 2038
ktime: Change ktime_set() to take 64bit seconds value
time64: Add time64.h header and define struct timespec64
time: More core infrastructure for timespec64
timekeeping: Convert timekeeping core to use timespec64s
timekeeping: Minor fixup for timespec64->timespec assignment
timekeeping: Rework frequency adjustments to work better w/ nohz
timekeeping: Use cached ntp_tick_length when accumulating error

Linus Walleij (1):
clocksource: document some basic timekeeping concepts

Mathieu Desnoyers (1):
seqcount: Add raw_write_seqcount_latch()

Thomas Gleixner (57):
tile: Convert VDSO timekeeping to the precise mechanism
timekeeping: Simplify arch_gettimeoffset()
ktime: Sanitize ktime_to_us/ms conversion
time: Consolidate the time accessor prototypes
timekeeping: Provide timespec64 based interfaces
timekeeper: Move tk_xtime to core code
timekeeping: Cache optimize struct timekeeper
timekeeping: Use timekeeping_update() instead of memcpy()
timekeeping: Provide internal ktime_t based data
timekeeping: Use ktime_t based data for ktime_get()
timekeeping: Provide ktime_get_with_offset()
timekeeping: Use ktime_t based data for ktime_get_real()
timekeeping; Use ktime_t based data for ktime_get_boottime()
timekeeping: Use ktime_t based data for ktime_get_clocktai()
timekeeping: Use ktime_t data for ktime_get_update_offsets_now()
timekeeping; Use ktime based data for ktime_get_update_offsets_tick()
timekeeping: Provide ktime_mono_to_any()
timerfd: Use ktime_mono_to_real()
input: evdev: Use ktime_mono_to_real()
drm: Use ktime_mono_to_real()
timekeeping: Remove ktime_get_monotonic_offset()
timekeeping: Provide ktime_get[*]_ns() helpers
time: Export nsecs_to_jiffies()
sched: Make task->real_start_time nanoseconds based
sched: Make task->start_time nanoseconds based
delayacct: Make accounting nanosecond based
delayacct: Remove braindamaged type conversions
powerpc: cell: Use ktime_get_ns()
connector: Use ktime_get_ns()
mfd: cros_ec_spi: Use ktime_get_ns()
misc: ioc4: Use ktime_get_ns()
net: mlx5: Use ktime_get_ns()
fs: lockd: Use ktime_get_ns()
hwmon: ibmaem: Use ktime_get_ns()
iio: Use ktime_get_real_ns()
arm: bL_switcher:k Use ktime_get_real_ns()
x86: kvm: Use ktime_get_boot_ns()
x86: kvm: Make kvm_get_time_and_clockread() nanoseconds based
timekeeping: Remove monotonic_to_bootbased
timekeeping: Use ktime_get_boottime() for get_monotonic_boottime()
timekeeping: Simplify getboottime()
timekeeping: Remove timekeeper.total_sleep_time
timekeeping: Simplify timekeeping_clocktai()
hangcheck-timer: Use ktime_get_ns()
timekeeping: Provide ktime_get_raw()
drm: i915: Use nsec based interfaces
drm: vmwgfx: Use nsec based interfaces
wireless: ath9k: Get rid of timespec conversions
clocksource: Make delta calculation a function
clocksource: Move cycle_last validation to core code
clocksource: Get rid of cycle_last
timekeeping: Restructure the timekeeper some more
timekeeping: Create struct tk_read_base and use it in struct
timekeeper
timekeeping: Use tk_read_base as argument for timekeeping_get_ns()
seqcount: Provide raw_read_seqcount()
timekeeping: Provide fast and NMI safe access to CLOCK_MONOTONIC
ftrace: Provide trace clocks monotonic

Documentation/timers/00-INDEX | 2 +
Documentation/timers/timekeeping.txt | 179 ++++
arch/arm/Kconfig | 1 -
arch/arm/common/bL_switcher.c | 16 +-
arch/arm64/kernel/vdso.c | 10 +-
arch/hexagon/Kconfig | 1 -
arch/ia64/kernel/time.c | 4 +-
arch/powerpc/kernel/time.c | 4 +-
arch/powerpc/platforms/cell/spu_base.c | 11 +-
arch/powerpc/platforms/cell/spufs/context.c | 4 +-
arch/powerpc/platforms/cell/spufs/file.c | 4 +-
arch/powerpc/platforms/cell/spufs/sched.c | 4 +-
arch/s390/Kconfig | 1 -
arch/s390/kernel/time.c | 16 +-
arch/tile/kernel/time.c | 13 +-
arch/tile/kernel/vdso/vgettimeofday.c | 7 +-
arch/x86/Kconfig | 2 +-
arch/x86/kernel/tsc.c | 21 +-
arch/x86/kernel/vsyscall_gtod.c | 23 +-
arch/x86/kvm/x86.c | 62 +-
drivers/char/hangcheck-timer.c | 33 +-
drivers/connector/cn_proc.c | 36 +-
drivers/gpu/drm/drm_irq.c | 16 +-
drivers/gpu/drm/i915/i915_drv.h | 2 +-
drivers/gpu/drm/i915/i915_gem.c | 33 +-
drivers/gpu/drm/i915/intel_pm.c | 12 +-
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 4 +-
drivers/gpu/drm/vmwgfx/vmwgfx_marker.c | 44 +-
drivers/hwmon/ibmaem.c | 6 +-
drivers/input/evdev.c | 7 +-
drivers/mfd/cros_ec_spi.c | 8 +-
drivers/misc/ioc4.c | 7 +-
drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 16 +-
drivers/net/wireless/ath/ath9k/hw.c | 7 +-
fs/lockd/mon.c | 4 +-
fs/proc/array.c | 7 +-
fs/timerfd.c | 6 +-
include/linux/clocksource.h | 2 -
include/linux/hrtimer.h | 14 -
include/linux/iio/iio.h | 9 +-
include/linux/ktime.h | 228 +----
include/linux/mlx5/driver.h | 4 +-
include/linux/sched.h | 8 +-
include/linux/seqlock.h | 27 +
include/linux/time.h | 65 +-
include/linux/time64.h | 190 ++++
include/linux/timekeeper_internal.h | 150 ++--
include/linux/timekeeping.h | 209 +++++
kernel/acct.c | 10 +-
kernel/delayacct.c | 52 +-
kernel/fork.c | 5 +-
kernel/time/Kconfig | 9 +-
kernel/time/Makefile | 2 +
kernel/time/clocksource.c | 12 +-
kernel/time/hrtimer.c | 76 +-
kernel/time/ntp.c | 15 +-
kernel/time/ntp_internal.h | 2 +-
kernel/time/posix-timers.c | 2 +
kernel/time/tick-internal.h | 2 +
kernel/time/time.c | 64 ++
kernel/time/timekeeping.c | 1147
+++++++++++++------------
kernel/time/timekeeping.h | 20 +
kernel/time/timekeeping_debug.c | 2 +-
kernel/time/timekeeping_internal.h | 17 +-
kernel/time/udelay_test.c | 168 ++++
kernel/trace/trace.c | 11 +-
kernel/tsacct.c | 19 +-
lib/Kconfig.debug | 9 +
tools/time/udelay_test.sh | 66 ++
69 files changed, 1926 insertions(+), 1323 deletions(-)
create mode 100644 Documentation/timers/timekeeping.txt
create mode 100644 include/linux/time64.h
create mode 100644 include/linux/timekeeping.h
create mode 100644 kernel/time/timekeeping.h
create mode 100644 kernel/time/udelay_test.c
create mode 100755 tools/time/udelay_test.sh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/