On Wed, 20 Jun 2018, Pavel Tatashin wrote: > If architecture does not support exact boot time, it is challenging to > estimate boot time without having a reference to the current persistent > clock value. Yet, we cannot read the persistent clock time again, because > this may lead to math discrepancies with the caller of read_boot_clock64() > who have read the persistent clock at a different time. > > This is why it is better to provide two values simultaneously: the > persistent clock value, and the boot time. > > Thus, we replace read_boot_clock64() with: > read_persistent_wall_and_boot_offset(wall_time, boot_offset) > > Where wall_time is returned by read_persistent_clock() > And boot_offset is wall_time - boot time > > We calculate boot_offset using the current value of local_clock() so > architectures, that do not have a dedicated boot_clock but have early > sched_clock(), such as SPARCv9, x86, and possibly more will benefit from > this change by getting a better and more consistent estimate of the boot > time without need for an arch specific implementation. > > Signed-off-by: Pavel Tatashin <pasha.tatas...@oracle.com> > --- > arch/arm/kernel/time.c | 12 +------- > arch/s390/kernel/time.c | 11 +++++-- > include/linux/timekeeping.h | 3 +- > kernel/time/timekeeping.c | 61 +++++++++++++++++++------------------
Please don't make that a wholesale patch. I surely indicated the steps which are required and the steps can be done as separate patches easily, Thanks, tglx