linux/sound/soc/meson
Jerome Brunet 5003d0ce5c
ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT
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: b11d26660d ("ASoC: meson: axg-fifo: use threaded irq to check periods")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://patch.msgid.link/20240807162705.4024136-1-jbrunet@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-08-08 20:34:55 +01:00
..
aiu-acodec-ctrl.c ASoC: meson: merge DAI call back functions into ops 2023-08-14 13:10:20 +01:00
aiu-codec-ctrl.c ASoC: meson: merge DAI call back functions into ops 2023-08-14 13:10:20 +01:00
aiu-encoder-i2s.c ASoC: meson: Rename set_fmt_new back to set_fmt 2022-06-06 12:34:06 +01:00
aiu-encoder-spdif.c
aiu-fifo-i2s.c ASoC: meson: Constify static snd_pcm_hardware 2024-05-07 00:00:22 +09:00
aiu-fifo-spdif.c ASoC: meson: Constify static snd_pcm_hardware 2024-05-07 00:00:22 +09:00
aiu-fifo.c ASoC: meson: Use snd_soc_substream_to_rtd() for accessing private_data 2024-05-06 23:59:55 +09:00
aiu-fifo.h ASoC: meson: Constify static snd_pcm_hardware 2024-05-07 00:00:22 +09:00
aiu.c ASoC: meson: aiu: fix function pointer type mismatch 2024-02-14 00:43:30 +00:00
aiu.h ASoC: meson: aiu: fix function pointer type mismatch 2024-02-14 00:43:30 +00:00
axg-card.c ASoC: meson: axg-card: make links nonatomic 2024-04-29 23:48:49 +09:00
axg-fifo.c ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT 2024-08-08 20:34:55 +01:00
axg-fifo.h ASoC: meson: axg-fifo: use FIELD helpers 2024-02-27 18:43:22 +00:00
axg-frddr.c ASoC: meson: tdm: add sample rate support up to 768kHz 2024-06-28 13:39:33 +01:00
axg-pdm.c ASoC: meson: merge DAI call back functions into ops 2023-08-14 13:10:20 +01:00
axg-spdifin.c ASoC: meson: axg-spdifin: use max width for rate detection 2024-02-26 14:03:16 +00:00
axg-spdifout.c ASoC: meson: Migrate to new style legacy DAI naming flag 2022-06-27 13:16:28 +01:00
axg-tdm-formatter.c ASoC: meson: axg-tdm: add continuous clock support 2024-04-29 23:48:50 +09:00
axg-tdm-formatter.h
axg-tdm-interface.c ASoC: meson: axg-tdm: add continuous clock support 2024-04-29 23:48:50 +09:00
axg-tdm.h ASoC: meson: tdm: add sample rate support up to 768kHz 2024-06-28 13:39:33 +01:00
axg-tdmin.c ASoC: meson: use helper function 2023-01-31 11:05:03 +00:00
axg-tdmout.c ASoC: meson: use helper function 2023-01-31 11:05:03 +00:00
axg-toddr.c ASoC: meson: tdm: add sample rate support up to 768kHz 2024-06-28 13:39:33 +01:00
g12a-toacodec.c ASoC: meson: g12a-toacodec: Fix event generation 2024-01-03 18:37:01 +00:00
g12a-tohdmitx.c ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux 2024-01-03 18:37:02 +00:00
gx-card.c ASoC: meson: Make meson_card_remove() return void 2023-10-23 13:29:46 +01:00
Kconfig ASoC: meson: cards: select SND_DYNAMIC_MINORS 2024-04-29 23:48:55 +09:00
Makefile ASoC: meson: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:24 +09:00
meson-card-utils.c ASoC: meson: Make meson_card_remove() return void 2023-10-23 13:29:46 +01:00
meson-card.h ASoC: meson: Make meson_card_remove() return void 2023-10-23 13:29:46 +01:00
meson-codec-glue.c ASoC: meson: convert not to use asoc_xxx() 2023-09-25 14:16:28 +02:00
meson-codec-glue.h
t9015.c ASoC: meson: t9015: fix function pointer type mismatch 2024-02-14 00:43:31 +00:00