Re: [RESEND PATCH] sched/clock: Fix local_clock() before sched_clock_init()

From: Peter Zijlstra
Date: Fri Apr 14 2023 - 04:28:04 EST


On Thu, Apr 13, 2023 at 05:50:12PM +0000, Aaron Thompson wrote:
> Have local_clock() return sched_clock() if sched_clock_init() has not
> yet run. sched_clock_cpu() has this check but it was not included in the
> new noinstr implementation of local_clock().
>
> The effect can be seen on x86 with CONFIG_PRINTK_TIME enabled, for
> instance. scd->clock quickly reaches the value of TICK_NSEC and that
> value is returned until sched_clock_init() runs.
>
> dmesg without this patch:
>
> [ 0.000000] kvm-clock: ...
> [ 0.000002] kvm-clock: ...
> [ 0.000672] clocksource: ...
> [ 0.001000] tsc: ...
> [ 0.001000] e820: ...
> [ 0.001000] e820: ...
> ...
> [ 0.001000] ..TIMER: ...
> [ 0.001000] clocksource: ...
> [ 0.378956] Calibrating delay loop ...
> [ 0.379955] pid_max: ...
>
> dmesg with this patch:
>
> [ 0.000000] kvm-clock: ...
> [ 0.000001] kvm-clock: ...
> [ 0.000675] clocksource: ...
> [ 0.002685] tsc: ...
> [ 0.003331] e820: ...
> [ 0.004190] e820: ...
> ...
> [ 0.421939] ..TIMER: ...
> [ 0.422842] clocksource: ...
> [ 0.424582] Calibrating delay loop ...
> [ 0.425580] pid_max: ...
>
> Fixes: 776f22913b8e ("sched/clock: Make local_clock() noinstr")
> Signed-off-by: Aaron Thompson <dev@xxxxxxxxxx>

Thanks!