lkml.org 
[lkml]   [2018]   [Jul]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v13 10/18] time: default boot time offset to local_clock()
    Date
    read_persistent_wall_and_boot_offset() is called during boot to read
    both the persistent clock and also return the offset between the boot time
    and the value of persistent clock.

    Change the default boot_offset from zero to 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.tatashin@oracle.com>
    ---
    kernel/time/timekeeping.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
    index cb738f825c12..30d7f64ffc87 100644
    --- a/kernel/time/timekeeping.c
    +++ b/kernel/time/timekeeping.c
    @@ -1503,14 +1503,17 @@ void __weak read_persistent_clock64(struct timespec64 *ts64)
    * Weak dummy function for arches that do not yet support it.
    * wall_time - current time as returned by persistent clock
    * boot_offset - offset that is defined as wall_time - boot_time
    - * default to 0.
    + * The default function calculates offset based on the current value of
    + * local_clock(). This way architectures that support sched_clock() but don't
    + * support dedicated boot time clock will provide the best estimate of the
    + * boot time.
    */
    void __weak __init
    read_persistent_wall_and_boot_offset(struct timespec64 *wall_time,
    struct timespec64 *boot_offset)
    {
    read_persistent_clock64(wall_time);
    - *boot_offset = (struct timespec64){0};
    + *boot_offset = ns_to_timespec64(local_clock());
    }

    /* Flag for if timekeeping_resume() has injected sleeptime */
    --
    2.18.0
    \
     
     \ /
      Last update: 2018-07-15 22:05    [W:4.159 / U:0.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site