[PATCH v6 0/4] Early boot time stamps for x86

From: Pavel Tatashin
Date: Wed Aug 30 2017 - 14:04:51 EST


changelog
---------
v5 - v6
- Added a new patch:
time: sync read_boot_clock64() with persistent clock
Which fixes missing __init macro, and enabled time discrepancy
fix that was noted by Thomas Gleixner
- Split "x86/time: read_boot_clock64() implementation" into a
separate patch
v4 - v5 - Fix compiler warnings on systems with stable clocks.
v3 - v4
- Fixed tsc_early_fini() call to be in the 2nd patch as reported
by Dou Liyang
- Improved comment before __use_sched_clock_early to explain why
we need both booleans.
- Simplified valid_clock logic in read_boot_clock64().

v2 - v3
- Addressed comment from Thomas Gleixner
- Timestamps are available a little later in boot but still much
earlier than in mainline. This significantly simplified this
work.
v1 - v2
In patch "x86/tsc: tsc early":
- added tsc_adjusted_early()
- fixed 32-bit compile error use do_div()

Adding early boot time stamps support for x86 machines.
SPARC patches for early boot time stamps are already integrated into
mainline linux.

Sample output
-------------
Before:
https://hastebin.com/jadaqukubu.scala

After:
https://hastebin.com/nubipozacu.scala

For more exaples how early time stamps are used, see this work:
https://lwn.net/Articles/732233/

As seen above, currently timestamps are available from around the time when
"Security Framework" is initialized. But, 26s already passed until we
reached to this point.
Pavel Tatashin (2):
sched/clock: interface to allow timestamps early in boot
x86/tsc: use tsc early

Pavel Tatashin (4):
sched/clock: interface to allow timestamps early in boot
time: sync read_boot_clock64() with persistent clock
x86/time: read_boot_clock64() implementation
x86/tsc: use tsc early

arch/arm/kernel/time.c | 2 +-
arch/s390/kernel/time.c | 2 +-
arch/x86/include/asm/tsc.h | 4 +++
arch/x86/kernel/setup.c | 10 +++++--
arch/x86/kernel/time.c | 31 ++++++++++++++++++++++
arch/x86/kernel/tsc.c | 47 +++++++++++++++++++++++++++++++++
include/linux/sched/clock.h | 4 +++
include/linux/timekeeping.h | 10 +++----
kernel/sched/clock.c | 63 ++++++++++++++++++++++++++++++++++++++++++++-
kernel/time/timekeeping.c | 8 ++++--
10 files changed, 169 insertions(+), 12 deletions(-)

--
2.14.1