From: Thomas Gleixner <tglx@linutronix.de>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
linux-kernel@vger.kernel.org
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: Re: [PATCH] clocksource/i8253: Acquire the lock disabled interrupts.
Date: Mon, 05 May 2025 15:29:04 +0200 [thread overview]
Message-ID: <87r013nq3j.ffs@tglx> (raw)
In-Reply-To: <20250404133116.p-XRWJXf@linutronix.de>
On Fri, Apr 04 2025 at 15:31, Sebastian Andrzej Siewior wrote:
> On x86 during boot, clockevent_i8253_disable() can be invoked via
> x86_late_time_init -> hpet_time_init() -> pit_timer_init() which happens
> with enabled interrupts.
> If some of the old i8253 hardware is actually used then lockdep will
> notice that i8253_lock is used in hardirq context. This causes lockdep
> to complain because it observed the lock being acquired with enabled
> interrupts and in hardirq context.
>
> Make clockevent_i8253_disable() acquire the lock with disabled
> interrupts.
This sentence does not make sense. I'll fix it up...
> Fixes: c8c4076723dac ("x86/timer: Skip PIT initialization on modern chipsets")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
> drivers/clocksource/i8253.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clocksource/i8253.c b/drivers/clocksource/i8253.c
> index 39f7c2d736d16..67dcd9c8f1875 100644
> --- a/drivers/clocksource/i8253.c
> +++ b/drivers/clocksource/i8253.c
> @@ -103,8 +103,9 @@ int __init clocksource_i8253_init(void)
> #ifdef CONFIG_CLKEVT_I8253
> void clockevent_i8253_disable(void)
> {
> - raw_spin_lock(&i8253_lock);
> + unsigned long flags;
>
> + raw_spin_lock_irqsave(&i8253_lock, flags);
> /*
> * Writing the MODE register should stop the counter, according to
> * the datasheet. This appears to work on real hardware (well, on
> @@ -133,7 +134,7 @@ void clockevent_i8253_disable(void)
>
> outb_p(0x30, PIT_MODE);
>
> - raw_spin_unlock(&i8253_lock);
> + raw_spin_unlock_irqrestore(&i8253_lock, flags);
> }
>
> static int pit_shutdown(struct clock_event_device *evt)
next prev parent reply other threads:[~2025-05-05 13:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-04 13:31 [PATCH] clocksource/i8253: Acquire the lock disabled interrupts Sebastian Andrzej Siewior
2025-05-05 8:30 ` Sebastian Andrzej Siewior
2025-05-05 13:29 ` Thomas Gleixner [this message]
2025-05-05 13:48 ` [tip: timers/urgent] clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() tip-bot2 for Sebastian Andrzej Siewior
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=87r013nq3j.ffs@tglx \
--to=tglx@linutronix.de \
--cc=bigeasy@linutronix.de \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.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.