Last week I sent out patches to enable early boot time stamp on SPARC, that work is now under review: http://www.spinics.net/lists/sparclinux/msg17372.html
This is continuation for that work, but adding early boot time stamps support for x86 machines. Here is example how this information is useful: Before: https://hastebin.com/zofiqazuze.scala After: https://hastebin.com/otayoliruc.scala If you take a look at the before case, it seems that this particular x86 machine took only 2 minutes to boot. Which, while can be improved, is not too bad considering that this machine has 192CPUs and 2.2T of memory. But, as it can be seen in the fix case, the time is much longer: - early boot time stamps account for another 80s! - early tsc offset is 549s, so it took over 9 minutes to get through POST, and GRUB before starting linux Now, the total boot time is 12m52s, which is really slow. Pavel Tatashin (9): sched/clock: broken stable to unstable transfer sched/clock: interface to allow timestamps early in boot x86/cpu: determining x86 vendor early x86/tsc: early MSR-based CPU/TSC frequency discovery x86/tsc: disable early messages from quick_pit_calibrate x86/tsc: use cpuid to determine TSC frequency x86/tsc: use cpuid to determine CPU frequency x86/tsc: tsc early x86/tsc: use tsc early arch/x86/include/asm/processor.h | 1 + arch/x86/include/asm/tsc.h | 5 + arch/x86/kernel/cpu/common.c | 36 ++++++++ arch/x86/kernel/head64.c | 1 + arch/x86/kernel/time.c | 1 + arch/x86/kernel/tsc.c | 166 +++++++++++++++++++++++++++++++++----- arch/x86/kernel/tsc_msr.c | 38 ++++++--- include/linux/sched/clock.h | 4 + kernel/sched/clock.c | 70 +++++++++++++++- 9 files changed, 284 insertions(+), 38 deletions(-)