Re: [PATCH v2] sched/cputime: Don't warn when the tick period starts after idle exit
From: Frederic Weisbecker
Date: Sat Oct 31 2026 - 19:11:40 EST
Le Sat, Oct 31, 2026 at 09:14:07AM +0100, Stian Halseth a écrit :
> kcpustat_dyntick_stop() warns if idle ends before the tick period
> that the next tick will account has started. That happens on x86 in
> a CPU's first idle period with the tick stopped, right after the
> switch from the jiffies clocksource to tsc-early.
>
> On the jiffies clocksource ktime only moves at the tick. When the
> clocksource switches some time d after a tick, that d is lost: ktime
> continues from the value of the last tick. The next tick comes
> TICK_NSEC after the last one, but ktime has only moved TICK_NSEC - d,
> while tick_periodic() still adds a full TICK_NSEC to tick_next_period,
> which is now d ahead of ktime. When NOHZ starts,
> tick_init_jiffy_update() rounds it up to a multiple of TICK_NSEC and
> the sched timer is armed there, up to nearly two ticks after now. A
> tick stop saves that as ts->last_tick, and an idle exit before now
> reaches ts->last_tick - TICK_NSEC sees the tick period in the future.
>
> Nothing is accounted twice then. The first tick covers a period that
> starts after the idle exit, and the code already handles it. Drop the
> warning.
>
> Fixes: 96a494c9cfd8 ("sched/cputime: Don't account idle time twice after dyntick-idle")
> Reported-by: Paul Menzel <pmenzel@xxxxxxxxxxxxx>
> Closes: https://lore.kernel.org/all/bfe9b14a-6e65-41c5-b638-26f6e033788b@xxxxxxxxxxxxx/
> Reported-by: Breno Leitao <leitao@xxxxxxxxxx>
> Link: https://lore.kernel.org/all/auTCQauaU733PY5z@xxxxxxxxx/
> Reported-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Link: https://lore.kernel.org/all/CAHk-=winC2u2D1FAX5grfq9F=bxmARxhuiQ4MvHAiJFu3iF6gw@xxxxxxxxxxxxxx/
> Signed-off-by: Stian Halseth <stian@xxxxxx>
Reviewed-by: Frederic Weisbecker <frederic@xxxxxxxxxx>
Thanks!
--
Frederic Weisbecker
SUSE Labs