From: Peter Zijlstra <peterz@infradead.org>
To: Frederic Weisbecker <frederic@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Ti Zhou <x2019cwm@stfx.ca>, Yunfeng Ye <yeyunfeng@huawei.com>,
"Paul E . McKenney" <paulmck@kernel.org>,
Marcelo Tosatti <mtosatti@redhat.com>,
Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 06/10] timer: Report ignored local enqueue in nohz mode
Date: Tue, 16 Mar 2021 16:27:56 +0100 [thread overview]
Message-ID: <YFDOfEsr07LN++YD@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20210311123708.23501-7-frederic@kernel.org>
On Thu, Mar 11, 2021 at 01:37:04PM +0100, Frederic Weisbecker wrote:
> Enqueuing a local timer after the tick has been stopped will result in
> the timer being ignored until the next random interrupt.
>
> Perform sanity checks to report these situations.
>
> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Paul E. McKenney <paulmck@kernel.org>
> ---
> kernel/sched/core.c | 20 +++++++++++++++++++-
> 1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index ca2bb629595f..24552911f92b 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -674,6 +674,22 @@ int get_nohz_timer_target(void)
> return cpu;
> }
>
> +/* Make sure the timer won't be ignored in dynticks-idle case */
> +static void wake_idle_assert_possible(void)
> +{
> +#ifdef CONFIG_SCHED_DEBUG
> + /*
> + * Timers are re-evaluated after idle IRQs. In case of softirq,
> + * we assume IRQ tail. Ksoftirqd shouldn't reach here as the
> + * timer base wouldn't be idle. And inline softirq processing
> + * after a call to local_bh_enable() within idle loop sound too
> + * fun to be considered here.
> + */
> + WARN_ONCE(in_task(),
> + "Late timer enqueue may be ignored\n");
> +#endif
> +}
> +
> /*
> * When add_timer_on() enqueues a timer into the timer wheel of an
> * idle CPU then this timer might expire before the next timer event
> @@ -688,8 +704,10 @@ static void wake_up_idle_cpu(int cpu)
> {
> struct rq *rq = cpu_rq(cpu);
>
> - if (cpu == smp_processor_id())
> + if (cpu == smp_processor_id()) {
> + wake_idle_assert_possible();
> return;
> + }
>
> if (set_nr_and_not_polling(rq->idle))
> smp_send_reschedule(cpu);
I'm not entirely sure I understand this one. What's the callchain that
leads to this?
next prev parent reply other threads:[~2021-03-16 15:29 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-11 12:36 [PATCH 00/10] tick/nohz updates Frederic Weisbecker
2021-03-11 12:36 ` [PATCH 01/10] tick/nohz: Prevent tick_nohz_get_sleep_length() from returning negative value Frederic Weisbecker
2021-03-16 12:21 ` Peter Zijlstra
2021-03-16 13:37 ` Frederic Weisbecker
2021-03-16 14:35 ` Peter Zijlstra
2021-03-16 14:53 ` Frederic Weisbecker
2021-03-16 15:26 ` Rafael J. Wysocki
2021-03-16 15:57 ` 回复: " Zhou Ti (x2019cwm)
2021-03-16 16:08 ` Zhou Ti (x2019cwm)
2021-03-16 16:25 ` Peter Zijlstra
2021-03-17 21:49 ` Zhou Ti (x2019cwm)
2021-03-25 13:14 ` Frederic Weisbecker
2021-03-25 18:56 ` Rafael J. Wysocki
2021-03-25 19:18 ` Zhou Ti (x2019cwm)
2021-03-25 19:50 ` Rafael J. Wysocki
2021-03-25 20:37 ` Zhou Ti (x2019cwm)
2021-03-26 17:01 ` Rafael J. Wysocki
2021-03-26 17:53 ` Zhou Ti (x2019cwm)
2021-03-26 18:54 ` Rafael J. Wysocki
2021-03-26 22:53 ` Zhou Ti (x2019cwm)
2021-03-29 12:44 ` Rafael J. Wysocki
2021-03-29 14:49 ` Zhou Ti (x2019cwm)
2021-03-11 12:37 ` [PATCH 02/10] tick/nohz: Add tick_nohz_full_this_cpu() Frederic Weisbecker
2021-03-16 12:28 ` Peter Zijlstra
2021-03-16 13:05 ` Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 03/10] tick/nohz: Conditionally restart tick on idle exit Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 04/10] tick/nohz: Remove superflous check for CONFIG_VIRT_CPU_ACCOUNTING_NATIVE Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 05/10] tick/nohz: Update idle_exittime on actual idle exit Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 06/10] timer: Report ignored local enqueue in nohz mode Frederic Weisbecker
2021-03-16 15:27 ` Peter Zijlstra [this message]
2021-03-25 13:07 ` Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 07/10] tick/nohz: Update nohz_full Kconfig help Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 08/10] tick/nohz: Only wakeup a single target cpu when kicking a task Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 09/10] tick/nohz: Change signal tick dependency to wakeup CPUs of member tasks Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 10/10] tick/nohz: Kick only _queued_ task whose tick dependency is updated 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=YFDOfEsr07LN++YD@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=frederic@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mtosatti@redhat.com \
--cc=paulmck@kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=tglx@linutronix.de \
--cc=x2019cwm@stfx.ca \
--cc=yeyunfeng@huawei.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.