All of lore.kernel.org
 help / color / mirror / Atom feed
From: Herve Codina <herve.codina@bootlin.com>
To: "Benoît Monin" <benoit.monin@bootlin.com>
Cc: Thomas Gleixner <tglx@kernel.org>,
	John Stultz <jstultz@google.com>,
	Daniel Lezcano <daniel.lezcano@kernel.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Paul Cercueil <paul@crapouillou.net>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Chen-Yu Tsai <wenst@chromium.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] time/sched_clock: Call enable_sched_clock_irqtime() with IRQs enabled
Date: Fri, 13 Nov 2026 17:49:44 +0100	[thread overview]
Message-ID: <20261113174944.05ea41cc@bootlin.com> (raw)
In-Reply-To: <20261113-sched-clock-might-sleep-v1-1-e11e404fba10@bootlin.com>

Hi Benoît,

On Fri, 13 Nov 2026 17:40:09 +0100
Benoît Monin <benoit.monin@bootlin.com> wrote:

> sched_clock_register() disables interrupts with local_irq_save() and
> calls enable_sched_clock_irqtime() before restoring them.
> 
> With CONFIG_IRQ_TIME_ACCOUNTING, enable_sched_clock_irqtime() calls
> static_branch_enable(). With CONFIG_JUMP_LABEL and CONFIG_HOTPLUG_CPU,
> this takes cpus_read_lock(), which eventually calls might_sleep() from
> percpu_down_read_internal(). So with CONFIG_DEBUG_ATOMIC_SLEEP the
> following is reported:
> 
>   BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:51
>   ...
>   Call Trace:
>   ...
>   [<a8000001008ad9c4>] __might_resched+0x3ac/0x3d0
>   [<a8000001008598b0>] percpu_down_read_internal.constprop.0+0x30/0x1b8
>   [<a800000100af5ddc>] static_key_enable+0x14/0x30
>   [<a80000010099b600>] sched_clock_register+0x2a0/0x370
>   ...
> 
> Most callers of sched_clock_register() are early init functions,
> for which might_sleep() stays silent because system_state is still
> SYSTEM_BOOTING. However, platform drivers such as timer-nxp-stm,
> timer-ti-dm, timer-mediatek and timer-rzn1, as well as the mips-gic-timer
> promotion work, call it later, where the warning is reported.
> 
> Only the sched_clock data update requires interrupts to be disabled.
> Enabling IRQ time accounting only flips a static branch, so restore
> interrupts before calling enable_sched_clock_irqtime().
> 
> Fixes: 2707745533d6 ("time/sched_clock: Disable interrupts in sched_clock_register()")
> Reported-by: Chen-Yu Tsai <wenst@chromium.org>
> Closes: https://lore.kernel.org/lkml/20261109095036.GA722431@google.com/
> Signed-off-by: Benoît Monin <benoit.monin@bootlin.com>
> ---
> Found the sleeping-in-atomic warning while working on the GIC
> synchronization series [1] and testing configuration options on the
> Mobileye EyeQ6H SoC, but the issue is not limited to that clock source.
> 
> Chen-Yu Tsai reported the same issue with timer-mediatek.
> 
> I also discussed the issue with my colleague Hervé, who reproduced the
> BUG on a board using timer-rzn1.
> 
> [1]: https://lore.kernel.org/lkml/20260929-sync-gic-counters-v4-0-ec70c4b60434@bootlin.com/
> ---
>  kernel/time/sched_clock.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

And I confirm that the patch fixes the BUG reproduced on my RZ/N1 board.

Tested-by: Herve Codina <herve.codina@bootlin.com>

Best regards,
Hervé

      reply	other threads:[~2026-11-13 16:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-13 16:40 [PATCH] time/sched_clock: Call enable_sched_clock_irqtime() with IRQs enabled Benoît Monin
2026-11-13 16:49 ` Herve Codina [this message]

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=20261113174944.05ea41cc@bootlin.com \
    --to=herve.codina@bootlin.com \
    --cc=benoit.monin@bootlin.com \
    --cc=daniel.lezcano@kernel.org \
    --cc=jstultz@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul@crapouillou.net \
    --cc=sboyd@kernel.org \
    --cc=tglx@kernel.org \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=wenst@chromium.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.