From: Frederic Weisbecker <frederic@kernel.org>
To: Stian Halseth <stian@itx.no>
Cc: Peter Zijlstra <peterz@infradead.org>,
Paul Menzel <pmenzel@molgen.mpg.de>,
Thomas Gleixner <tglx@kernel.org>,
Anna-Maria Behnsen <anna-maria@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
Shrikanth Hegde <sshegde@linux.ibm.com>,
regressions@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] sched/cputime: Don't warn when the tick period starts after idle exit
Date: Wed, 28 Oct 2026 15:14:14 +0100 [thread overview]
Message-ID: <auIDNl9EUX4CzWzr@localhost.localdomain> (raw)
In-Reply-To: <bd9b6592bce4b8f2e802518bf2cad561af61e78e.camel@itx.no>
Le Tue, Oct 27, 2026 at 08:05:49PM +0100, Stian Halseth a écrit :
> Hi Frederic,
>
> On Tue, 2026-10-27 at 18:06 +0100, Frederic Weisbecker wrote:
>
> > Ok let me try to picture this:
> >
> > Initially, jiffies or tsc-early, not sure, is the clocksource:
> >
> > - tick_setup_device() sets tick_next_period to ktime_get()
> > - tick_periodic() adds TICK_NSEC to tick_next_period right before updating
> > jiffies. So as you said tick_next_period == ktime_get()
> > - Note last_tick is not involved in that mode
> >
> > Then later on boot comes a oneshot device:
>
> The clocksource is initially jiffies, and I believe there is a step missing
> before the oneshot switch: the clocksource switch, while the tick is still
> periodic.
>
> Please let me know where I lose you
If I knew where I was, I wouldn't be lost. But don't worry I was already
"there" way before you arrived :-)
> or if/when you disagree with
> my analysis. Not sure if you're more confused about my attempt of an
> explanation, or by what's really happening ;)
>
> Here we go...
>
> The oneshot switch can only happen inside a tick, so at the earliest
> in the first tick after the clocksource switch. In the guest it came
> 0.7s later since tsc-early waits for the watchdog in the guest.
>
> So...for a while tick_periodic() runs on tsc-early. ktime now moves
> between ticks too, but the next tick still adds a full TICK_NSEC, so
> tick_next_period gets ahead of ktime_get() by the part of the period
> that had passed at the switch. Still here? :)
So let me depict that:
// clocksource = jiffies ?
// clockevent = lapic ?
tick_setup_device()
tick_next_period = ktime_get() // jiffies_to_nsecs(jiffies)
tick_periodic()
tick_next_period += TICK_NSECS
jiffies++ // ktime_get() == tick_next_period
// jiffies > tsc_early
clocksource_select()
tick_periodic()
//one tick has passed, so ktime_get() == jiffies + 1
tick_next_period += TICK_NSECS
jiffies++ // ktime_get() == tick_next_period == jiffies
No?
Thanks.
--
Frederic Weisbecker
SUSE Labs
next prev parent reply other threads:[~2026-10-28 14:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-07 14:29 [PATCH v3] sched/cputime: Don't account idle time twice after dyntick-idle Stian Halseth
2026-10-14 12:17 ` Frederic Weisbecker
2026-10-25 7:27 ` WARNING: kernel/sched/cputime.c:481 at kcpustat_dyntick_stop+0x8b/0xa0, CPU#0: swapper/0/0 (was: [PATCH v3] sched/cputime: Don't account idle time twice after dyntick-idle) Paul Menzel
2026-10-25 8:13 ` Stian Halseth
2026-10-25 10:02 ` [PATCH] sched/cputime: Don't warn when the tick period starts after idle exit Stian Halseth
2026-10-26 16:42 ` Frederic Weisbecker
2026-10-26 17:28 ` Stian Halseth
2026-10-27 17:06 ` Frederic Weisbecker
2026-10-27 19:05 ` Stian Halseth
2026-10-28 14:14 ` Frederic Weisbecker [this message]
2026-10-28 17:37 ` Stian Halseth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=auIDNl9EUX4CzWzr@localhost.localdomain \
--to=frederic@kernel.org \
--cc=anna-maria@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=pmenzel@molgen.mpg.de \
--cc=regressions@lists.linux.dev \
--cc=sshegde@linux.ibm.com \
--cc=stian@itx.no \
--cc=tglx@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.