Re: [PATCH v3] printk: fix zero-valued printk timestamps in early boot
Petr Mladek <[email protected]> Wed, 4 Mar 2026 12:23:40 +0100
| Newsgroups | org.kernel.vger.linux-embedded,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Tue 2026-02-10 16:47:41, Tim Bird wrote: > During early boot, printk timestamps are reported as zero before > kernel timekeeping starts (e.g. before time_init()). This > hinders boot-time optimization efforts. This period is about 400 > milliseconds for many current desktop and embedded machines > running Linux. > > Add support to save cycles during early boot, and output correct > timestamp values after timekeeping is initialized. get_cycles() > is operational on arm64 and x86_64 from kernel start. Add code > and variables to save calibration values used to later convert > cycle counts to time values in the early printks. Add a config > to control the feature. > > This yields non-zero timestamps for printks from the very start > of kernel execution. The timestamps are relative to the start of > the architecture-specified counter used in get_cycles > (e.g. the TSC on x86_64 and cntvct_el0 on arm64). > > All timestamps reflect time from processor power-on instead of > time from the kernel's timekeeping initialization. > > Signed-off-by: Tim Bird <[email protected]> It looks good to me and seems to work fine. Feel free to use: Reviewed-by: Petr Mladek <[email protected]> Tested-by: Petr Mladek <[email protected]> See a note below. > --- a/init/main.c > +++ b/init/main.c > @@ -104,6 +104,7 @@ > #include <linux/pidfs.h> > #include <linux/ptdump.h> > #include <linux/time_namespace.h> > +#include <linux/early_times.h> JFYI, I have tried this patch on top of the current Linus' tree (v7.0-rc2+) and it conflicted with the commit 499f86de4f8c34e19 ("init/main: read bootconfig header with get_unaligned_le32()") which added here: #include <linux/unaligned.h> > #include <net/net_namespace.h> > > #include <asm/io.h> Best Regards, Petr