leds: trigger: Disable CPU trigger on PREEMPT_RT
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Wed, 13 Oct 2021 09:37:19 +0000 (11:37 +0200)
committerPavel Machek <pavel@ucw.cz>
Wed, 13 Oct 2021 18:07:57 +0000 (20:07 +0200)
The CPU trigger is invoked on ARM from CPU-idle. That trigger later
invokes led_trigger_event() which may invoke the callback of the actual driver.
That driver can acquire a spinlock_t which is okay on kernel without
PREEMPT_RT. On a PREEMPT_RT enabled kernel this lock is turned into a
sleeping lock and must not be acquired with disabled interrupts.

Disable the CPU trigger on PREEMPT_RT.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://lkml.kernel.org/r/20210924111501.m57cwwn7ahiyxxdd@linutronix.de
Signed-off-by: Pavel Machek <pavel@ucw.cz>
drivers/leds/trigger/Kconfig

index 1f1d572..dc6816d 100644 (file)
@@ -64,6 +64,7 @@ config LEDS_TRIGGER_BACKLIGHT
 
 config LEDS_TRIGGER_CPU
        bool "LED CPU Trigger"
+       depends on !PREEMPT_RT
        help
          This allows LEDs to be controlled by active CPUs. This shows
          the active CPUs across an array of LEDs so you can see which