]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - queue-5.10/asoc-meson-axg-card-fix-nonatomic-links.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / queue-5.10 / asoc-meson-axg-card-fix-nonatomic-links.patch
diff --git a/queue-5.10/asoc-meson-axg-card-fix-nonatomic-links.patch b/queue-5.10/asoc-meson-axg-card-fix-nonatomic-links.patch
new file mode 100644 (file)
index 0000000..19710c9
--- /dev/null
@@ -0,0 +1,57 @@
+From 657196199cee56dfe4fdfa5ead06d439b1d19e39 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 21 Apr 2022 17:57:25 +0200
+Subject: ASoC: meson: axg-card: Fix nonatomic links
+
+From: Neil Armstrong <narmstrong@baylibre.com>
+
+[ Upstream commit 0c9b152c72e53016e96593bdbb8cffe2176694b9 ]
+
+This commit e138233e56e9829e65b6293887063a1a3ccb2d68 causes the
+following system crash when using audio on G12A/G12B & SM1 systems:
+
+ BUG: sleeping function called from invalid context at kernel/locking/mutex.c:282
+  in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/0
+ preempt_count: 10001, expected: 0
+ RCU nest depth: 0, expected: 0
+ Preemption disabled at:
+ schedule_preempt_disabled+0x20/0x2c
+
+ mutex_lock+0x24/0x60
+ _snd_pcm_stream_lock_irqsave+0x20/0x3c
+ snd_pcm_period_elapsed+0x24/0xa4
+ axg_fifo_pcm_irq_block+0x64/0xdc
+ __handle_irq_event_percpu+0x104/0x264
+ handle_irq_event+0x48/0xb4
+ ...
+ start_kernel+0x3f0/0x484
+ __primary_switched+0xc0/0xc8
+
+Revert this commit until the crash is fixed.
+
+Fixes: e138233e56e9829e65b6 ("ASoC: meson: axg-card: make links nonatomic")
+Reported-by: Dmitry Shmidt <dimitrysh@google.com>
+Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
+Acked-by: Jerome Brunet <jbrunet@baylibre.com>
+Link: https://lore.kernel.org/r/20220421155725.2589089-2-narmstrong@baylibre.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/meson/axg-card.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/sound/soc/meson/axg-card.c b/sound/soc/meson/axg-card.c
+index cbbaa55d92a66..2b77010c2c5ce 100644
+--- a/sound/soc/meson/axg-card.c
++++ b/sound/soc/meson/axg-card.c
+@@ -320,7 +320,6 @@ static int axg_card_add_link(struct snd_soc_card *card, struct device_node *np,
+       dai_link->cpus = cpu;
+       dai_link->num_cpus = 1;
+-      dai_link->nonatomic = true;
+       ret = meson_card_parse_dai(card, np, &dai_link->cpus->of_node,
+                                  &dai_link->cpus->dai_name);
+-- 
+2.43.0
+