]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.4
authorSasha Levin <sashal@kernel.org>
Tue, 27 Dec 2022 02:31:09 +0000 (21:31 -0500)
committerSasha Levin <sashal@kernel.org>
Tue, 27 Dec 2022 02:31:09 +0000 (21:31 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
13 files changed:
queue-5.4/alsa-asoc-hda-move-rename-snd_hdac_ext_stop_streams-.patch [new file with mode: 0644]
queue-5.4/alsa-hda-add-snd_hdac_stop_streams-helper.patch [new file with mode: 0644]
queue-5.4/asoc-audio-graph-card-fix-refcount-leak-of-cpu_ep-in.patch [new file with mode: 0644]
queue-5.4/asoc-intel-skylake-fix-driver-hang-during-shutdown.patch [new file with mode: 0644]
queue-5.4/asoc-mediatek-mt8173-rt5650-rt5514-fix-refcount-leak.patch [new file with mode: 0644]
queue-5.4/asoc-rockchip-pdm-add-missing-clk_disable_unprepare-.patch [new file with mode: 0644]
queue-5.4/asoc-rockchip-spdif-add-missing-clk_disable_unprepar.patch [new file with mode: 0644]
queue-5.4/asoc-rt5670-remove-unbalanced-pm_runtime_put.patch [new file with mode: 0644]
queue-5.4/asoc-wm8994-fix-potential-deadlock.patch [new file with mode: 0644]
queue-5.4/perf-debug-set-debug_peo_args-and-redirect_to_stderr.patch [new file with mode: 0644]
queue-5.4/pstore-make-sure-config_pstore_pmsg-selects-config_r.patch [new file with mode: 0644]
queue-5.4/pstore-switch-pmsg_lock-to-an-rt_mutex-to-avoid-prio.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/alsa-asoc-hda-move-rename-snd_hdac_ext_stop_streams-.patch b/queue-5.4/alsa-asoc-hda-move-rename-snd_hdac_ext_stop_streams-.patch
new file mode 100644 (file)
index 0000000..14d7a57
--- /dev/null
@@ -0,0 +1,140 @@
+From eb63e0ee7ebf6a1bd1f20e05cbb22af31e18163b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 16 Dec 2021 17:11:27 -0600
+Subject: ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to
+ hdac_stream.c
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+
+[ Upstream commit 12054f0ce8be7d2003ec068ab27c9eb608397b98 ]
+
+snd_hdac_ext_stop_streams() has really nothing to do with the
+extension, it just loops over the bus streams.
+
+Move it to the hdac_stream layer and rename to remove the 'ext'
+prefix and add the precision that the chip will also be stopped.
+
+Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Reviewed-by: Kai Vehmanen <kai.vehmanen@intel.com>
+Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
+Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
+Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
+Link: https://lore.kernel.org/r/20211216231128.344321-2-pierre-louis.bossart@linux.intel.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Stable-dep-of: 171107237246 ("ASoC: Intel: Skylake: Fix driver hang during shutdown")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/sound/hdaudio.h         |  1 +
+ include/sound/hdaudio_ext.h     |  1 -
+ sound/hda/ext/hdac_ext_stream.c | 17 -----------------
+ sound/hda/hdac_stream.c         | 16 ++++++++++++++++
+ sound/soc/intel/skylake/skl.c   |  4 ++--
+ 5 files changed, 19 insertions(+), 20 deletions(-)
+
+diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
+index 44e57bcc4a57..53e081bcd8ec 100644
+--- a/include/sound/hdaudio.h
++++ b/include/sound/hdaudio.h
+@@ -555,6 +555,7 @@ int snd_hdac_stream_set_params(struct hdac_stream *azx_dev,
+ void snd_hdac_stream_start(struct hdac_stream *azx_dev, bool fresh_start);
+ void snd_hdac_stream_clear(struct hdac_stream *azx_dev);
+ void snd_hdac_stream_stop(struct hdac_stream *azx_dev);
++void snd_hdac_stop_streams_and_chip(struct hdac_bus *bus);
+ void snd_hdac_stream_reset(struct hdac_stream *azx_dev);
+ void snd_hdac_stream_sync_trigger(struct hdac_stream *azx_dev, bool set,
+                                 unsigned int streams, unsigned int reg);
+diff --git a/include/sound/hdaudio_ext.h b/include/sound/hdaudio_ext.h
+index 23dc8deac344..91440476319a 100644
+--- a/include/sound/hdaudio_ext.h
++++ b/include/sound/hdaudio_ext.h
+@@ -92,7 +92,6 @@ void snd_hdac_ext_stream_decouple_locked(struct hdac_bus *bus,
+                                 struct hdac_ext_stream *azx_dev, bool decouple);
+ void snd_hdac_ext_stream_decouple(struct hdac_bus *bus,
+                               struct hdac_ext_stream *azx_dev, bool decouple);
+-void snd_hdac_ext_stop_streams(struct hdac_bus *bus);
+ int snd_hdac_ext_stream_set_spib(struct hdac_bus *bus,
+                                struct hdac_ext_stream *stream, u32 value);
+diff --git a/sound/hda/ext/hdac_ext_stream.c b/sound/hda/ext/hdac_ext_stream.c
+index 04f4070fbf36..17b34bb9fecd 100644
+--- a/sound/hda/ext/hdac_ext_stream.c
++++ b/sound/hda/ext/hdac_ext_stream.c
+@@ -475,23 +475,6 @@ int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_bus *bus,
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_get_spbmaxfifo);
+-
+-/**
+- * snd_hdac_ext_stop_streams - stop all stream if running
+- * @bus: HD-audio core bus
+- */
+-void snd_hdac_ext_stop_streams(struct hdac_bus *bus)
+-{
+-      struct hdac_stream *stream;
+-
+-      if (bus->chip_init) {
+-              list_for_each_entry(stream, &bus->stream_list, list)
+-                      snd_hdac_stream_stop(stream);
+-              snd_hdac_bus_stop_chip(bus);
+-      }
+-}
+-EXPORT_SYMBOL_GPL(snd_hdac_ext_stop_streams);
+-
+ /**
+  * snd_hdac_ext_stream_drsm_enable - enable DMA resume for a stream
+  * @bus: HD-audio core bus
+diff --git a/sound/hda/hdac_stream.c b/sound/hda/hdac_stream.c
+index b299b8b7f871..78d2674c7285 100644
+--- a/sound/hda/hdac_stream.c
++++ b/sound/hda/hdac_stream.c
+@@ -142,6 +142,22 @@ void snd_hdac_stream_stop(struct hdac_stream *azx_dev)
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_stream_stop);
++/**
++ * snd_hdac_stop_streams_and_chip - stop all streams and chip if running
++ * @bus: HD-audio core bus
++ */
++void snd_hdac_stop_streams_and_chip(struct hdac_bus *bus)
++{
++      struct hdac_stream *stream;
++
++      if (bus->chip_init) {
++              list_for_each_entry(stream, &bus->stream_list, list)
++                      snd_hdac_stream_stop(stream);
++              snd_hdac_bus_stop_chip(bus);
++      }
++}
++EXPORT_SYMBOL_GPL(snd_hdac_stop_streams_and_chip);
++
+ /**
+  * snd_hdac_stream_reset - reset a stream
+  * @azx_dev: HD-audio core stream to reset
+diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
+index 2e5fbd220923..dc6937a59443 100644
+--- a/sound/soc/intel/skylake/skl.c
++++ b/sound/soc/intel/skylake/skl.c
+@@ -438,7 +438,7 @@ static int skl_free(struct hdac_bus *bus)
+       skl->init_done = 0; /* to be sure */
+-      snd_hdac_ext_stop_streams(bus);
++      snd_hdac_stop_streams_and_chip(bus);
+       if (bus->irq >= 0)
+               free_irq(bus->irq, (void *)bus);
+@@ -1116,7 +1116,7 @@ static void skl_shutdown(struct pci_dev *pci)
+       if (!skl->init_done)
+               return;
+-      snd_hdac_ext_stop_streams(bus);
++      snd_hdac_stop_streams_and_chip(bus);
+       list_for_each_entry(s, &bus->stream_list, list) {
+               stream = stream_to_hdac_ext_stream(s);
+               snd_hdac_ext_stream_decouple(bus, stream, false);
+-- 
+2.35.1
+
diff --git a/queue-5.4/alsa-hda-add-snd_hdac_stop_streams-helper.patch b/queue-5.4/alsa-hda-add-snd_hdac_stop_streams-helper.patch
new file mode 100644 (file)
index 0000000..b1bbcef
--- /dev/null
@@ -0,0 +1,95 @@
+From 6af7fab87358d6f6a7f6e0926d11840bb6bd3655 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 19 Sep 2022 14:10:38 +0200
+Subject: ALSA: hda: add snd_hdac_stop_streams() helper
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+
+[ Upstream commit 24ad3835a6db4f8857975effa6bf47730371a5ff ]
+
+Minor code reuse, no functionality change.
+
+Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
+Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
+Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Link: https://lore.kernel.org/r/20220919121041.43463-6-pierre-louis.bossart@linux.intel.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Stable-dep-of: 171107237246 ("ASoC: Intel: Skylake: Fix driver hang during shutdown")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/sound/hdaudio.h        |  1 +
+ sound/hda/hdac_stream.c        | 17 ++++++++++++++---
+ sound/pci/hda/hda_controller.c |  4 +---
+ 3 files changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
+index 53e081bcd8ec..749b1bce9fc6 100644
+--- a/include/sound/hdaudio.h
++++ b/include/sound/hdaudio.h
+@@ -555,6 +555,7 @@ int snd_hdac_stream_set_params(struct hdac_stream *azx_dev,
+ void snd_hdac_stream_start(struct hdac_stream *azx_dev, bool fresh_start);
+ void snd_hdac_stream_clear(struct hdac_stream *azx_dev);
+ void snd_hdac_stream_stop(struct hdac_stream *azx_dev);
++void snd_hdac_stop_streams(struct hdac_bus *bus);
+ void snd_hdac_stop_streams_and_chip(struct hdac_bus *bus);
+ void snd_hdac_stream_reset(struct hdac_stream *azx_dev);
+ void snd_hdac_stream_sync_trigger(struct hdac_stream *azx_dev, bool set,
+diff --git a/sound/hda/hdac_stream.c b/sound/hda/hdac_stream.c
+index 78d2674c7285..2beb94828729 100644
+--- a/sound/hda/hdac_stream.c
++++ b/sound/hda/hdac_stream.c
+@@ -142,17 +142,28 @@ void snd_hdac_stream_stop(struct hdac_stream *azx_dev)
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_stream_stop);
++/**
++ * snd_hdac_stop_streams - stop all streams
++ * @bus: HD-audio core bus
++ */
++void snd_hdac_stop_streams(struct hdac_bus *bus)
++{
++      struct hdac_stream *stream;
++
++      list_for_each_entry(stream, &bus->stream_list, list)
++              snd_hdac_stream_stop(stream);
++}
++EXPORT_SYMBOL_GPL(snd_hdac_stop_streams);
++
+ /**
+  * snd_hdac_stop_streams_and_chip - stop all streams and chip if running
+  * @bus: HD-audio core bus
+  */
+ void snd_hdac_stop_streams_and_chip(struct hdac_bus *bus)
+ {
+-      struct hdac_stream *stream;
+       if (bus->chip_init) {
+-              list_for_each_entry(stream, &bus->stream_list, list)
+-                      snd_hdac_stream_stop(stream);
++              snd_hdac_stop_streams(bus);
+               snd_hdac_bus_stop_chip(bus);
+       }
+ }
+diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c
+index 6a159c6c2f54..6dff68691dff 100644
+--- a/sound/pci/hda/hda_controller.c
++++ b/sound/pci/hda/hda_controller.c
+@@ -1093,10 +1093,8 @@ EXPORT_SYMBOL_GPL(azx_init_chip);
+ void azx_stop_all_streams(struct azx *chip)
+ {
+       struct hdac_bus *bus = azx_bus(chip);
+-      struct hdac_stream *s;
+-      list_for_each_entry(s, &bus->stream_list, list)
+-              snd_hdac_stream_stop(s);
++      snd_hdac_stop_streams(bus);
+ }
+ EXPORT_SYMBOL_GPL(azx_stop_all_streams);
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-audio-graph-card-fix-refcount-leak-of-cpu_ep-in.patch b/queue-5.4/asoc-audio-graph-card-fix-refcount-leak-of-cpu_ep-in.patch
new file mode 100644 (file)
index 0000000..950005d
--- /dev/null
@@ -0,0 +1,43 @@
+From 32a5195fab952f7f70d813da7d93fab6cdc83b01 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 Dec 2022 16:15:27 +0800
+Subject: ASoC: audio-graph-card: fix refcount leak of cpu_ep in
+ __graph_for_each_link()
+
+From: Wang Yufen <wangyufen@huawei.com>
+
+[ Upstream commit 8ab2d12c726f0fde0692fa5d81d8019b3dcd62d0 ]
+
+The of_get_next_child() returns a node with refcount incremented, and
+decrements the refcount of prev. So in the error path of the while loop,
+of_node_put() needs be called for cpu_ep.
+
+Fixes: fce9b90c1ab7 ("ASoC: audio-graph-card: cleanup DAI link loop method - step2")
+Signed-off-by: Wang Yufen <wangyufen@huawei.com>
+Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Link: https://lore.kernel.org/r/1670228127-13835-1-git-send-email-wangyufen@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/generic/audio-graph-card.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c
+index 96aa2c015572..a96a7cd8af6e 100644
+--- a/sound/soc/generic/audio-graph-card.c
++++ b/sound/soc/generic/audio-graph-card.c
+@@ -466,8 +466,10 @@ static int graph_for_each_link(struct asoc_simple_priv *priv,
+                       of_node_put(codec_ep);
+                       of_node_put(codec_port);
+-                      if (ret < 0)
++                      if (ret < 0) {
++                              of_node_put(cpu_ep);
+                               return ret;
++                      }
+                       codec_port_old = codec_port;
+               }
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-intel-skylake-fix-driver-hang-during-shutdown.patch b/queue-5.4/asoc-intel-skylake-fix-driver-hang-during-shutdown.patch
new file mode 100644 (file)
index 0000000..e06f676
--- /dev/null
@@ -0,0 +1,41 @@
+From 10ec81412da52f843d0e1b80ab6264a7d8a712db Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 Dec 2022 09:53:29 +0100
+Subject: ASoC: Intel: Skylake: Fix driver hang during shutdown
+
+From: Cezary Rojewski <cezary.rojewski@intel.com>
+
+[ Upstream commit 171107237246d66bce04f3769d33648f896b4ce3 ]
+
+AudioDSP cores and HDAudio links need to be turned off on shutdown to
+ensure no communication or data transfer occurs during the procedure.
+
+Fixes: c5a76a246989 ("ASoC: Intel: Skylake: Add shutdown callback")
+Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
+Tested-by: Lukasz Majczak <lma@semihlaf.com>
+Link: https://lore.kernel.org/r/20221205085330.857665-6-cezary.rojewski@intel.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/intel/skylake/skl.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
+index dc6937a59443..80cff74c23af 100644
+--- a/sound/soc/intel/skylake/skl.c
++++ b/sound/soc/intel/skylake/skl.c
+@@ -1116,7 +1116,10 @@ static void skl_shutdown(struct pci_dev *pci)
+       if (!skl->init_done)
+               return;
+-      snd_hdac_stop_streams_and_chip(bus);
++      snd_hdac_stop_streams(bus);
++      snd_hdac_ext_bus_link_power_down_all(bus);
++      skl_dsp_sleep(skl->dsp);
++
+       list_for_each_entry(s, &bus->stream_list, list) {
+               stream = stream_to_hdac_ext_stream(s);
+               snd_hdac_ext_stream_decouple(bus, stream, false);
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-mediatek-mt8173-rt5650-rt5514-fix-refcount-leak.patch b/queue-5.4/asoc-mediatek-mt8173-rt5650-rt5514-fix-refcount-leak.patch
new file mode 100644 (file)
index 0000000..e94b135
--- /dev/null
@@ -0,0 +1,57 @@
+From a36e9bb0681cc3ad5fb8fc2cffc14168570f265a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 Dec 2022 18:04:24 +0800
+Subject: ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in
+ mt8173_rt5650_rt5514_dev_probe()
+
+From: Wang Yufen <wangyufen@huawei.com>
+
+[ Upstream commit 3327d721114c109ba0575f86f8fda3b525404054 ]
+
+The node returned by of_parse_phandle() with refcount incremented,
+of_node_put() needs be called when finish using it. So add it in the
+error path in mt8173_rt5650_rt5514_dev_probe().
+
+Fixes: 0d1d7a664288 ("ASoC: mediatek: Refine mt8173 driver and change config option")
+Signed-off-by: Wang Yufen <wangyufen@huawei.com>
+Link: https://lore.kernel.org/r/1670234664-24246-1-git-send-email-wangyufen@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c b/sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c
+index 6f8542329bab..a21aefe1a4d1 100644
+--- a/sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c
++++ b/sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c
+@@ -200,14 +200,16 @@ static int mt8173_rt5650_rt5514_dev_probe(struct platform_device *pdev)
+       if (!mt8173_rt5650_rt5514_dais[DAI_LINK_CODEC_I2S].codecs[0].of_node) {
+               dev_err(&pdev->dev,
+                       "Property 'audio-codec' missing or invalid\n");
+-              return -EINVAL;
++              ret = -EINVAL;
++              goto out;
+       }
+       mt8173_rt5650_rt5514_dais[DAI_LINK_CODEC_I2S].codecs[1].of_node =
+               of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 1);
+       if (!mt8173_rt5650_rt5514_dais[DAI_LINK_CODEC_I2S].codecs[1].of_node) {
+               dev_err(&pdev->dev,
+                       "Property 'audio-codec' missing or invalid\n");
+-              return -EINVAL;
++              ret = -EINVAL;
++              goto out;
+       }
+       mt8173_rt5650_rt5514_codec_conf[0].of_node =
+               mt8173_rt5650_rt5514_dais[DAI_LINK_CODEC_I2S].codecs[1].of_node;
+@@ -219,6 +221,7 @@ static int mt8173_rt5650_rt5514_dev_probe(struct platform_device *pdev)
+               dev_err(&pdev->dev, "%s snd_soc_register_card fail %d\n",
+                       __func__, ret);
++out:
+       of_node_put(platform_node);
+       return ret;
+ }
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-rockchip-pdm-add-missing-clk_disable_unprepare-.patch b/queue-5.4/asoc-rockchip-pdm-add-missing-clk_disable_unprepare-.patch
new file mode 100644 (file)
index 0000000..f1b187c
--- /dev/null
@@ -0,0 +1,37 @@
+From 849e990ad098330372d733334772d4dbfad9e273 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 Dec 2022 11:28:02 +0800
+Subject: ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in
+ rockchip_pdm_runtime_resume()
+
+From: Wang Jingjin <wangjingjin1@huawei.com>
+
+[ Upstream commit ef0a098efb36660326c133af9b5a04a96a00e3ca ]
+
+The clk_disable_unprepare() should be called in the error handling of
+rockchip_pdm_runtime_resume().
+
+Fixes: fc05a5b22253 ("ASoC: rockchip: add support for pdm controller")
+Signed-off-by: Wang Jingjin <wangjingjin1@huawei.com>
+Link: https://lore.kernel.org/r/20221205032802.2422983-1-wangjingjin1@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/rockchip/rockchip_pdm.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/rockchip/rockchip_pdm.c b/sound/soc/rockchip/rockchip_pdm.c
+index 1707414cfa92..9f6cbaf3c0e9 100644
+--- a/sound/soc/rockchip/rockchip_pdm.c
++++ b/sound/soc/rockchip/rockchip_pdm.c
+@@ -368,6 +368,7 @@ static int rockchip_pdm_runtime_resume(struct device *dev)
+       ret = clk_prepare_enable(pdm->hclk);
+       if (ret) {
++              clk_disable_unprepare(pdm->clk);
+               dev_err(pdm->dev, "hclock enable failed %d\n", ret);
+               return ret;
+       }
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-rockchip-spdif-add-missing-clk_disable_unprepar.patch b/queue-5.4/asoc-rockchip-spdif-add-missing-clk_disable_unprepar.patch
new file mode 100644 (file)
index 0000000..f3bdbfc
--- /dev/null
@@ -0,0 +1,37 @@
+From a9f09861f94f0719964eda0568a32b6e72cef43b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 8 Dec 2022 14:39:00 +0800
+Subject: ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in
+ rk_spdif_runtime_resume()
+
+From: Wang Jingjin <wangjingjin1@huawei.com>
+
+[ Upstream commit 6d94d0090527b1763872275a7ccd44df7219b31e ]
+
+rk_spdif_runtime_resume() may have called clk_prepare_enable() before return
+from failed branches, add missing clk_disable_unprepare() in this case.
+
+Fixes: f874b80e1571 ("ASoC: rockchip: Add rockchip SPDIF transceiver driver")
+Signed-off-by: Wang Jingjin <wangjingjin1@huawei.com>
+Link: https://lore.kernel.org/r/20221208063900.4180790-1-wangjingjin1@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/rockchip/rockchip_spdif.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
+index 6635145a26c4..b2b4e5b7739a 100644
+--- a/sound/soc/rockchip/rockchip_spdif.c
++++ b/sound/soc/rockchip/rockchip_spdif.c
+@@ -86,6 +86,7 @@ static int __maybe_unused rk_spdif_runtime_resume(struct device *dev)
+       ret = clk_prepare_enable(spdif->hclk);
+       if (ret) {
++              clk_disable_unprepare(spdif->mclk);
+               dev_err(spdif->dev, "hclk clock enable failed %d\n", ret);
+               return ret;
+       }
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-rt5670-remove-unbalanced-pm_runtime_put.patch b/queue-5.4/asoc-rt5670-remove-unbalanced-pm_runtime_put.patch
new file mode 100644 (file)
index 0000000..0cd89ac
--- /dev/null
@@ -0,0 +1,42 @@
+From 6796616621630c4c7f4e8acc8031645069f8ab6a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 13 Dec 2022 13:33:19 +0100
+Subject: ASoC: rt5670: Remove unbalanced pm_runtime_put()
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit 6c900dcc3f7331a67ed29739d74524e428d137fb ]
+
+For some reason rt5670_i2c_probe() does a pm_runtime_put() at the end
+of a successful probe. But it has never done a pm_runtime_get() leading
+to the following error being logged into dmesg:
+
+ rt5670 i2c-10EC5640:00: Runtime PM usage count underflow!
+
+Fix this by removing the unnecessary pm_runtime_put().
+
+Fixes: 64e89e5f5548 ("ASoC: rt5670: Add runtime PM support")
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Link: https://lore.kernel.org/r/20221213123319.11285-1-hdegoede@redhat.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/codecs/rt5670.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
+index f21181734170..fefdd8cbd8f5 100644
+--- a/sound/soc/codecs/rt5670.c
++++ b/sound/soc/codecs/rt5670.c
+@@ -3185,8 +3185,6 @@ static int rt5670_i2c_probe(struct i2c_client *i2c,
+       if (ret < 0)
+               goto err;
+-      pm_runtime_put(&i2c->dev);
+-
+       return 0;
+ err:
+       pm_runtime_disable(&i2c->dev);
+-- 
+2.35.1
+
diff --git a/queue-5.4/asoc-wm8994-fix-potential-deadlock.patch b/queue-5.4/asoc-wm8994-fix-potential-deadlock.patch
new file mode 100644 (file)
index 0000000..398994e
--- /dev/null
@@ -0,0 +1,42 @@
+From 2e02c921ee47f725c189cb9ebdada66f61d6c784 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 9 Dec 2022 10:16:57 +0100
+Subject: ASoC: wm8994: Fix potential deadlock
+
+From: Marek Szyprowski <m.szyprowski@samsung.com>
+
+[ Upstream commit 9529dc167ffcdfd201b9f0eda71015f174095f7e ]
+
+Fix this by dropping wm8994->accdet_lock while calling
+cancel_delayed_work_sync(&wm8994->mic_work) in wm1811_jackdet_irq().
+
+Fixes: c0cc3f166525 ("ASoC: wm8994: Allow a delay between jack insertion and microphone detect")
+Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
+Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
+Link: https://lore.kernel.org/r/20221209091657.1183-1-m.szyprowski@samsung.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/codecs/wm8994.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
+index 6dbab3fc6537..4ae7ec8d71cd 100644
+--- a/sound/soc/codecs/wm8994.c
++++ b/sound/soc/codecs/wm8994.c
+@@ -3711,7 +3711,12 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
+       } else {
+               dev_dbg(component->dev, "Jack not detected\n");
++              /* Release wm8994->accdet_lock to avoid deadlock:
++               * cancel_delayed_work_sync() takes wm8994->mic_work internal
++               * lock and wm1811_mic_work takes wm8994->accdet_lock */
++              mutex_unlock(&wm8994->accdet_lock);
+               cancel_delayed_work_sync(&wm8994->mic_work);
++              mutex_lock(&wm8994->accdet_lock);
+               snd_soc_component_update_bits(component, WM8958_MICBIAS2,
+                                   WM8958_MICB2_DISCH, WM8958_MICB2_DISCH);
+-- 
+2.35.1
+
diff --git a/queue-5.4/perf-debug-set-debug_peo_args-and-redirect_to_stderr.patch b/queue-5.4/perf-debug-set-debug_peo_args-and-redirect_to_stderr.patch
new file mode 100644 (file)
index 0000000..353794b
--- /dev/null
@@ -0,0 +1,90 @@
+From 89c993022aa6a6726562fff7cb6f6bb78acd2520 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 20 Dec 2022 11:57:00 +0800
+Subject: perf debug: Set debug_peo_args and redirect_to_stderr variable to
+ correct values in perf_quiet_option()
+
+From: Yang Jihong <yangjihong1@huawei.com>
+
+[ Upstream commit 188ac720d364035008a54d249cf47b4cc100f819 ]
+
+When perf uses quiet mode, perf_quiet_option() sets the 'debug_peo_args'
+variable to -1, and display_attr() incorrectly determines the value of
+'debug_peo_args'.  As a result, unexpected information is displayed.
+
+Before:
+
+  # perf record --quiet -- ls > /dev/null
+  ------------------------------------------------------------
+  perf_event_attr:
+    size                             128
+    { sample_period, sample_freq }   4000
+    sample_type                      IP|TID|TIME|PERIOD
+    read_format                      ID|LOST
+    disabled                         1
+    inherit                          1
+    mmap                             1
+    comm                             1
+    freq                             1
+    enable_on_exec                   1
+    task                             1
+    precise_ip                       3
+    sample_id_all                    1
+    exclude_guest                    1
+    mmap2                            1
+    comm_exec                        1
+    ksymbol                          1
+    bpf_event                        1
+  ------------------------------------------------------------
+  ...
+
+After:
+  # perf record --quiet -- ls > /dev/null
+  #
+
+redirect_to_stderr is a similar problem.
+
+Fixes: f78eaef0e0493f60 ("perf tools: Allow to force redirect pr_debug to stderr.")
+Fixes: ccd26741f5e6bdf2 ("perf tool: Provide an option to print perf_event_open args and return value")
+Suggested-by: Adrian Hunter <adrian.hunter@intel.com>
+Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
+Signed-off-by: Yang Jihong <yangjihong1@huawei.com>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Andi Kleen <ak@linux.intel.com>
+Cc: Carsten Haitzler <carsten.haitzler@arm.com>
+Cc: Ian Rogers <irogers@google.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: Jiri Olsa <jolsa@kernel.org>
+Cc: Leo Yan <leo.yan@linaro.org>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: martin.lau@kernel.org
+Cc: Masami Hiramatsu <mhiramat@kernel.org>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Ravi Bangoria <ravi.bangoria@amd.com>
+Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
+Link: https://lore.kernel.org/r/20221220035702.188413-2-yangjihong1@huawei.com
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/perf/util/debug.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c
+index 682146d04379..112cb85f6086 100644
+--- a/tools/perf/util/debug.c
++++ b/tools/perf/util/debug.c
+@@ -232,6 +232,10 @@ int perf_quiet_option(void)
+               var++;
+       }
++      /* For debug variables that are used as bool types, set to 0. */
++      redirect_to_stderr = 0;
++      debug_peo_args = 0;
++
+       return 0;
+ }
+-- 
+2.35.1
+
diff --git a/queue-5.4/pstore-make-sure-config_pstore_pmsg-selects-config_r.patch b/queue-5.4/pstore-make-sure-config_pstore_pmsg-selects-config_r.patch
new file mode 100644 (file)
index 0000000..15748aa
--- /dev/null
@@ -0,0 +1,53 @@
+From 681fab61b3de5ba4e5f4618d1e71c480e4f69315 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 21 Dec 2022 05:18:55 +0000
+Subject: pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
+
+From: John Stultz <jstultz@google.com>
+
+[ Upstream commit 2f4fec5943407318b9523f01ce1f5d668c028332 ]
+
+In commit 76d62f24db07 ("pstore: Switch pmsg_lock to an rt_mutex
+to avoid priority inversion") I changed a lock to an rt_mutex.
+
+However, its possible that CONFIG_RT_MUTEXES is not enabled,
+which then results in a build failure, as the 0day bot detected:
+  https://lore.kernel.org/linux-mm/202212211244.TwzWZD3H-lkp@intel.com/
+
+Thus this patch changes CONFIG_PSTORE_PMSG to select
+CONFIG_RT_MUTEXES, which ensures the build will not fail.
+
+Cc: Wei Wang <wvw@google.com>
+Cc: Midas Chien<midaschieh@google.com>
+Cc: Connor O'Brien <connoro@google.com>
+Cc: Kees Cook <keescook@chromium.org>
+Cc: Anton Vorontsov <anton@enomsg.org>
+Cc: Colin Cross <ccross@android.com>
+Cc: Tony Luck <tony.luck@intel.com>
+Cc: kernel test robot <lkp@intel.com>
+Cc: kernel-team@android.com
+Fixes: 76d62f24db07 ("pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion")
+Reported-by: kernel test robot <lkp@intel.com>
+Signed-off-by: John Stultz <jstultz@google.com>
+Signed-off-by: Kees Cook <keescook@chromium.org>
+Link: https://lore.kernel.org/r/20221221051855.15761-1-jstultz@google.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/pstore/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/fs/pstore/Kconfig b/fs/pstore/Kconfig
+index 8f0369aad22a..9fe46cc26403 100644
+--- a/fs/pstore/Kconfig
++++ b/fs/pstore/Kconfig
+@@ -118,6 +118,7 @@ config PSTORE_CONSOLE
+ config PSTORE_PMSG
+       bool "Log user space messages"
+       depends on PSTORE
++      select RT_MUTEXES
+       help
+         When the option is enabled, pstore will export a character
+         interface /dev/pmsg0 to log user space messages. On reboot
+-- 
+2.35.1
+
diff --git a/queue-5.4/pstore-switch-pmsg_lock-to-an-rt_mutex-to-avoid-prio.patch b/queue-5.4/pstore-switch-pmsg_lock-to-an-rt_mutex-to-avoid-prio.patch
new file mode 100644 (file)
index 0000000..b3d83d1
--- /dev/null
@@ -0,0 +1,70 @@
+From 8b2089283f3c619a9e40b2a16b72b30ed3ed9039 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 14 Dec 2022 23:18:34 +0000
+Subject: pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
+
+From: John Stultz <jstultz@google.com>
+
+[ Upstream commit 76d62f24db07f22ccf9bc18ca793c27d4ebef721 ]
+
+Wei Wang reported seeing priority inversion caused latencies
+caused by contention on pmsg_lock, and suggested it be switched
+to a rt_mutex.
+
+I was initially hesitant this would help, as the tasks in that
+trace all seemed to be SCHED_NORMAL, so the benefit would be
+limited to only nice boosting.
+
+However, another similar issue was raised where the priority
+inversion was seen did involve a blocked RT task so it is clear
+this would be helpful in that case.
+
+Cc: Wei Wang <wvw@google.com>
+Cc: Midas Chien<midaschieh@google.com>
+Cc: Connor O'Brien <connoro@google.com>
+Cc: Kees Cook <keescook@chromium.org>
+Cc: Anton Vorontsov <anton@enomsg.org>
+Cc: Colin Cross <ccross@android.com>
+Cc: Tony Luck <tony.luck@intel.com>
+Cc: kernel-team@android.com
+Fixes: 9d5438f462ab ("pstore: Add pmsg - user-space accessible pstore object")
+Reported-by: Wei Wang <wvw@google.com>
+Signed-off-by: John Stultz <jstultz@google.com>
+Signed-off-by: Kees Cook <keescook@chromium.org>
+Link: https://lore.kernel.org/r/20221214231834.3711880-1-jstultz@google.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/pstore/pmsg.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/fs/pstore/pmsg.c b/fs/pstore/pmsg.c
+index d8542ec2f38c..18cf94b597e0 100644
+--- a/fs/pstore/pmsg.c
++++ b/fs/pstore/pmsg.c
+@@ -7,9 +7,10 @@
+ #include <linux/device.h>
+ #include <linux/fs.h>
+ #include <linux/uaccess.h>
++#include <linux/rtmutex.h>
+ #include "internal.h"
+-static DEFINE_MUTEX(pmsg_lock);
++static DEFINE_RT_MUTEX(pmsg_lock);
+ static ssize_t write_pmsg(struct file *file, const char __user *buf,
+                         size_t count, loff_t *ppos)
+@@ -28,9 +29,9 @@ static ssize_t write_pmsg(struct file *file, const char __user *buf,
+       if (!access_ok(buf, count))
+               return -EFAULT;
+-      mutex_lock(&pmsg_lock);
++      rt_mutex_lock(&pmsg_lock);
+       ret = psinfo->write_user(&record, buf);
+-      mutex_unlock(&pmsg_lock);
++      rt_mutex_unlock(&pmsg_lock);
+       return ret ? ret : count;
+ }
+-- 
+2.35.1
+
index 671d0ff3399da68a2cddbd570579717a0da87160..09a7140f87bcd7460d2e18711a0f21cb7b2a32bf 100644 (file)
@@ -430,3 +430,15 @@ drm-fsl-dcu-fix-return-type-of-fsl_dcu_drm_connector.patch
 drm-sti-fix-return-type-of-sti_-dvo-hda-hdmi-_connec.patch
 orangefs-fix-kmemleak-in-orangefs_prepare_debugfs_he.patch
 orangefs-fix-kmemleak-in-orangefs_-kernel-client-_de.patch
+alsa-asoc-hda-move-rename-snd_hdac_ext_stop_streams-.patch
+alsa-hda-add-snd_hdac_stop_streams-helper.patch
+asoc-intel-skylake-fix-driver-hang-during-shutdown.patch
+asoc-mediatek-mt8173-rt5650-rt5514-fix-refcount-leak.patch
+asoc-audio-graph-card-fix-refcount-leak-of-cpu_ep-in.patch
+asoc-rockchip-pdm-add-missing-clk_disable_unprepare-.patch
+asoc-wm8994-fix-potential-deadlock.patch
+asoc-rockchip-spdif-add-missing-clk_disable_unprepar.patch
+asoc-rt5670-remove-unbalanced-pm_runtime_put.patch
+pstore-switch-pmsg_lock-to-an-rt_mutex-to-avoid-prio.patch
+perf-debug-set-debug_peo_args-and-redirect_to_stderr.patch
+pstore-make-sure-config_pstore_pmsg-selects-config_r.patch