WSL2-Linux-Kernel/sound/soc
Jerome Brunet ba43e5827e ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT
[ Upstream commit 5003d0ce5c7da3a02c0aff771f516f99731e7390 ]

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: b11d26660dff ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-19 05:45:43 +02:00
..
adi ASoC: axi-i2s: Use devm_platform_get_and_ioremap_resource() 2021-06-14 15:01:03 +01:00
amd ASoC: amd: vg: fix for pm resume callback sequence 2022-04-08 14:24:02 +02:00
atmel Revert "ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek" 2024-01-25 14:52:31 -08:00
au1x
bcm ASoC: Updates for v5.15 2021-08-30 14:57:03 +02:00
cirrus
codecs ASoC: codecs: wsa881x: Correct Soundwire ports mask 2024-08-19 05:45:42 +02:00
dwc ASoC: dwc: move DMA init to snd_soc_dai_driver probe() 2023-06-21 15:59:13 +02:00
fsl ASoC: fsl-asoc-card: set priv->pdev before using it 2024-07-05 09:14:40 +02:00
generic ASoC: simple-card: fixup asoc_simple_probe() error handling 2023-11-08 17:26:44 +01:00
hisilicon ASoC: hisilicon: Use devm_platform_get_and_ioremap_resource() 2021-06-15 16:39:49 +01:00
img ASoC: img-spdif-out: Use devm_platform_get_and_ioremap_resource() 2021-06-15 16:39:47 +01:00
intel ASoC: Intel: use soc_intel_is_byt_cr() only when IOSF_MBI is reachable 2024-08-19 05:45:26 +02:00
jz4740 ASoC: jz4740-i2s: Handle independent FIFO flush bits 2023-01-12 11:58:57 +01:00
kirkwood ASoC: kirkwood: Fix potential NULL dereference 2024-06-16 13:39:27 +02:00
mediatek ASoC: mediatek: mt8192: fix register configuration for tdm 2024-06-16 13:39:45 +02:00
meson ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT 2024-08-19 05:45:43 +02:00
mxs ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe 2022-06-09 10:22:56 +02:00
pxa ARM: pxa: spitz: use gpio descriptors for audio 2024-08-19 05:44:54 +02:00
qcom ASoC: qcom: lpass-cpu: Fix fallback SD line index handling 2023-01-18 11:48:48 +01:00
rockchip ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume() 2022-12-31 13:14:45 +01:00
samsung ASoC: samsung: change gpiod_speaker_power and rx1950_audio from global to static variables 2022-08-17 14:24:04 +02:00
sh ASoC: rsnd: fixup #endif position 2023-03-10 09:39:27 +01:00
sof ASoC: SOF: sof-pci-dev: Fix community key quirk detection 2023-12-08 08:48:04 +01:00
spear ASoC: spear: spdif_out: Use devm_platform_get_and_ioremap_resource() 2021-06-17 13:47:06 +01:00
sprd ASoC: sprd: Use managed buffer allocation 2021-08-04 08:10:27 +02:00
sti ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call 2022-03-28 09:58:43 +02:00
stm ASoC: stm32: dfsdm: manage cb buffers cleanup 2022-12-02 17:41:10 +01:00
sunxi ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 2024-03-01 13:21:45 +01:00
tegra ASoC: tegra: Fix DSPK 16-bit playback 2024-05-17 11:51:04 +02:00
ti ASoC: ti: omap-hdmi: Fix too long driver name 2024-07-27 10:46:11 +02:00
uniphier ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA 2022-01-27 11:04:06 +01:00
ux500
xilinx ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting 2022-04-08 14:23:13 +02:00
xtensa
Kconfig ASoC: topology: Select SND_DYNAMIC_MINORS 2021-07-27 13:13:04 +01:00
Makefile
soc-ac97.c ASoC: soc-ac97: cleanup cppcheck warning 2021-08-16 13:29:36 +01:00
soc-acpi.c
soc-card.c
soc-component.c ASoC: soc-component: cleanup cppcheck warning at snd_soc_pcm_component_pm_runtime_get() 2021-08-16 13:29:35 +01:00
soc-compress.c ASoC: soc-compress: Inherit atomicity from DAI link for Compress FE 2023-05-17 11:50:26 +02:00
soc-core.c ASoC: soc-core.c: Skip dummy codec when adding platforms 2024-04-13 13:01:46 +02:00
soc-dai.c ASoC: soc-dai: cleanup cppcheck warning at snd_soc_pcm_dai_new() 2021-08-16 13:29:32 +01:00
soc-dapm.c ASoC: dapm: Initialise kcontrol data for mux/demux controls 2022-07-21 21:24:39 +02:00
soc-devres.c
soc-generic-dmaengine-pcm.c ALSA: dmaengine: Synchronize dma channel after drop() 2024-07-27 10:46:11 +02:00
soc-jack.c ASoC: soc-jack: cleanup cppcheck warning for CONFIG_GPIOLIB 2021-08-16 13:29:34 +01:00
soc-link.c
soc-ops.c ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw 2024-04-10 16:19:41 +02:00
soc-pcm.c ASoC: soc-pcm: test if a BE can be prepared 2023-06-21 15:59:13 +02:00
soc-topology-test.c
soc-topology.c ASoC: topology: Return -ENOMEM on memory allocation failure 2023-02-14 19:18:01 +01:00
soc-utils.c ASoC: soc-utils: Export snd_soc_dai_is_dummy() symbol 2023-10-10 21:59:04 +02:00