lkml.org 
[lkml]   [2018]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v14 24/25] sched: early boot clock
    Date
    Allow sched_clock() to be used before schec_clock_init() is called.
    This provides with a way to get early boot timestamps on machines with
    unstable clocks.

    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    ---
    init/main.c | 2 +-
    kernel/sched/clock.c | 10 +++++++++-
    2 files changed, 10 insertions(+), 2 deletions(-)

    diff --git a/init/main.c b/init/main.c
    index 162d931c9511..ff0a24170b95 100644
    --- a/init/main.c
    +++ b/init/main.c
    @@ -642,7 +642,6 @@ asmlinkage __visible void __init start_kernel(void)
    softirq_init();
    timekeeping_init();
    time_init();
    - sched_clock_init();
    printk_safe_init();
    perf_event_init();
    profile_init();
    @@ -697,6 +696,7 @@ asmlinkage __visible void __init start_kernel(void)
    acpi_early_init();
    if (late_time_init)
    late_time_init();
    + sched_clock_init();
    calibrate_delay();
    pid_idr_init();
    anon_vma_init();
    diff --git a/kernel/sched/clock.c b/kernel/sched/clock.c
    index 0e9dbb2d9aea..7a8a63b940ee 100644
    --- a/kernel/sched/clock.c
    +++ b/kernel/sched/clock.c
    @@ -202,7 +202,15 @@ static void __sched_clock_gtod_offset(void)

    void __init sched_clock_init(void)
    {
    + unsigned long flags;
    +
    sched_clock_running = 1;
    +
    + /* Adjust __gtod_offset for contigious transition from early clock */
    + local_irq_save(flags);
    + sched_clock_tick();
    + local_irq_restore(flags);
    + __sched_clock_gtod_offset();
    }
    /*
    * We run this as late_initcall() such that it runs after all built-in drivers,
    @@ -356,7 +364,7 @@ u64 sched_clock_cpu(int cpu)
    return sched_clock() + __sched_clock_offset;

    if (unlikely(!sched_clock_running))
    - return 0ull;
    + return sched_clock();

    preempt_disable_notrace();
    scd = cpu_sdc(cpu);
    --
    2.18.0
    \
     
     \ /
      Last update: 2018-07-18 04:26    [W:4.054 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site