From: Joel Fernandes <joel@joelfernandes.org>
To: Frederic Weisbecker <frederic@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
vineethrp@gmail.com
Subject: Re: [PATCH 3/3] tick/nohz: Don't shutdown the lowres tick from itself
Date: Mon, 17 Jul 2023 17:30:49 +0000 [thread overview]
Message-ID: <20230717173049.GA2760149@google.com> (raw)
In-Reply-To: <ZLLjEVxM+kf84vgI@lothringen>
On Sat, Jul 15, 2023 at 08:18:57PM +0200, Frederic Weisbecker wrote:
> On Fri, Jul 14, 2023 at 09:02:43PM -0400, Joel Fernandes wrote:
> > On Fri, Jul 14, 2023 at 8:01 PM Frederic Weisbecker <frederic@kernel.org> wrote:
> > >
> > > On Fri, Jul 14, 2023 at 02:44:49PM -0400, Joel Fernandes wrote:
> > > > On 7/14/23 08:08, Frederic Weisbecker wrote:
> > > > One slight concern here though, where in the idle loop is the removed
> > > > statement "tick_program_event(KTIME_MAX, 1);" happening if the tick was
> > > > already stopped before? If it is happening in tick_nohz_stop_tick(), don't
> > > > we early return from there and avoid doing that
> > > > "tick_program_event(KTIME_MAX, 1);" altogether, if the tick was already
> > > > stopped and the next event has not changed?
> > > >
> > > > /* Skip reprogram of event if its not changed */
> > > > if (ts->tick_stopped && (expires == ts->next_tick)) {
> > > > /* Sanity check: make sure clockevent is actually programmed */
> > > > if (tick == KTIME_MAX || ts->next_tick == [...]
> > > > return;
> > > > [...]
> > > > }
> > >
> > > Sure, if tick_program_event(KTIME_MAX, 1) was already called in the
> > > previous idle loop iteration, then there is no need to call that again.
> > >
> > > Or am I missing something else?
> >
> > Just take it with a grain of salt but I think you need to still call
> > tick_program_event(KTIME_MAX, 1) here for the case where the tick was
> > previously stopped, and then when the next tick fires (say after a
> > long time T), but that tick is a one-off and does not result in
> > restarting the tick -- then there is no one to call
> > "tick_program_event(KTIME_MAX, 1)".
>
> I'm a bit confused about that one-off thing. What can trigger that timer
> interrupt if it has been stopped?
>
> One thing can happen though: a pending timer IRQ while we are stopping the
> tick (IRQs are disabled in that idle loop portion). But then that pending timer
> interrupt is not going to reprogram another one. So it remains stopped.
I think I see what you mean now. Maybe I wrongly assumed the above 'Skip
reprogram of event' code could early return and skip over
"tick_program_event(KTIME_MAX, 1);", but I think it cannot because of the
"expires != ts->next_tick" check.
Maybe the "tick_program_event(KTIME_MAX, 1)" bit in tick_nohz_handler() is
supposed to handle buggy hardware where an unexpected timer event came
through? In such a situation, the idle loop will not write
"tick_program_event(KTIME_MAX, 1);" again because it already did so the
previous time, as you pointed.
Adding Vineeth who is also looking into this code.
thanks,
- Joel
next prev parent reply other threads:[~2023-07-17 17:32 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-14 12:08 [PATCH 0/3] tick/nohz cleanups Frederic Weisbecker
2023-07-14 12:08 ` [PATCH 1/3] tick/nohz: Rename the tick handlers to more self-explanatory names Frederic Weisbecker
2023-07-14 18:28 ` Joel Fernandes
2023-07-14 12:08 ` [PATCH 2/3] tick/nohz: Update obsolete comments Frederic Weisbecker
2023-07-14 12:08 ` [PATCH 3/3] tick/nohz: Don't shutdown the lowres tick from itself Frederic Weisbecker
2023-07-14 18:44 ` Joel Fernandes
2023-07-15 0:01 ` Frederic Weisbecker
2023-07-15 1:02 ` Joel Fernandes
2023-07-15 18:18 ` Frederic Weisbecker
2023-07-15 22:31 ` Joel Fernandes
2023-07-17 17:30 ` Joel Fernandes [this message]
2023-07-25 10:01 ` Frederic Weisbecker
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=20230717173049.GA2760149@google.com \
--to=joel@joelfernandes.org \
--cc=frederic@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=vineethrp@gmail.com \
/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.