mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 16:12:02 +00:00
5003d0ce5c
With PREEMPT_RT enabled a spinlock_t becomes a sleeping lock.
This is usually not a problem with spinlocks used in IRQ context since
IRQ handlers get threaded. However, if IRQF_ONESHOT is set, the primary
handler won't be force-threaded and runs always in hardirq context. This is
a problem because spinlock_t requires a preemptible context on PREEMPT_RT.
In this particular instance, regmap mmio uses spinlock_t to protect the
register access and IRQF_ONESHOT is set on the IRQ. In this case, it is
actually better to do everything in threaded handler and it solves the
problem with PREEMPT_RT.
Reported-by: Arseniy Krasnov <avkrasnov@salutedevices.com>
Closes: https://lore.kernel.org/linux-amlogic/20240729131652.3012327-1-avkrasnov@salutedevices.com
Suggested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Fixes:
|
||
---|---|---|
.. | ||
aiu-acodec-ctrl.c | ||
aiu-codec-ctrl.c | ||
aiu-encoder-i2s.c | ||
aiu-encoder-spdif.c | ||
aiu-fifo-i2s.c | ||
aiu-fifo-spdif.c | ||
aiu-fifo.c | ||
aiu-fifo.h | ||
aiu.c | ||
aiu.h | ||
axg-card.c | ||
axg-fifo.c | ||
axg-fifo.h | ||
axg-frddr.c | ||
axg-pdm.c | ||
axg-spdifin.c | ||
axg-spdifout.c | ||
axg-tdm-formatter.c | ||
axg-tdm-formatter.h | ||
axg-tdm-interface.c | ||
axg-tdm.h | ||
axg-tdmin.c | ||
axg-tdmout.c | ||
axg-toddr.c | ||
g12a-toacodec.c | ||
g12a-tohdmitx.c | ||
gx-card.c | ||
Kconfig | ||
Makefile | ||
meson-card-utils.c | ||
meson-card.h | ||
meson-codec-glue.c | ||
meson-codec-glue.h | ||
t9015.c |