All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] clocksource/i8253: Acquire the lock disabled interrupts.
@ 2025-04-04 13:31 Sebastian Andrzej Siewior
  2025-05-05  8:30 ` Sebastian Andrzej Siewior
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-04-04 13:31 UTC (permalink / raw)
  To: linux-kernel; +Cc: Daniel Lezcano, Thomas Gleixner

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.

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)
-- 
2.49.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-05-05 13:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2025-05-05 13:48 ` [tip: timers/urgent] clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() tip-bot2 for Sebastian Andrzej Siewior

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.