]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 20 Dec 2019 06:28:36 +0000 (07:28 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 20 Dec 2019 06:28:36 +0000 (07:28 +0100)
added patches:
alsa-hda-fix-regression-by-strip-mask-fix.patch

queue-5.4/alsa-hda-fix-regression-by-strip-mask-fix.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/alsa-hda-fix-regression-by-strip-mask-fix.patch b/queue-5.4/alsa-hda-fix-regression-by-strip-mask-fix.patch
new file mode 100644 (file)
index 0000000..2d70aa5
--- /dev/null
@@ -0,0 +1,61 @@
+From 6fd739c04ffd877641b01371f9fde67901e7f9cb Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Sat, 14 Dec 2019 18:52:17 +0100
+Subject: ALSA: hda: Fix regression by strip mask fix
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 6fd739c04ffd877641b01371f9fde67901e7f9cb upstream.
+
+The commit e38e486d66e2 ("ALSA: hda: Modify stream stripe mask only
+when needed") tried to address the regression by the unconditional
+application of the stripe mask, but this caused yet another
+regression for the previously working devices.  Namely, the patch
+clears the azx_dev->stripe flag at snd_hdac_stream_clear(), but this
+may be called multiple times before restarting the stream, so this
+ended up with clearance of the flag for the whole time.
+
+This patch fixes the regression by moving the azx_dev->stripe flag
+clearance at the counter-part, the close callback of HDMI codec
+driver instead.
+
+Fixes: e38e486d66e2 ("ALSA: hda: Modify stream stripe mask only when needed")
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205855
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=204477
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20191214175217.31852-1-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Cc: Stefani Seibold <stefani@seibold.net>
+Cc: Laura Abbott <labbott@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/hda/hdac_stream.c    |    4 +---
+ sound/pci/hda/patch_hdmi.c |    2 ++
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/sound/hda/hdac_stream.c
++++ b/sound/hda/hdac_stream.c
+@@ -120,10 +120,8 @@ void snd_hdac_stream_clear(struct hdac_s
+       snd_hdac_stream_updateb(azx_dev, SD_CTL,
+                               SD_CTL_DMA_START | SD_INT_MASK, 0);
+       snd_hdac_stream_writeb(azx_dev, SD_STS, SD_INT_MASK); /* to be sure */
+-      if (azx_dev->stripe) {
++      if (azx_dev->stripe)
+               snd_hdac_stream_updateb(azx_dev, SD_CTL_3B, SD_CTL_STRIPE_MASK, 0);
+-              azx_dev->stripe = 0;
+-      }
+       azx_dev->running = false;
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_stream_clear);
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1983,6 +1983,8 @@ static int hdmi_pcm_close(struct hda_pcm
+               per_cvt->assigned = 0;
+               hinfo->nid = 0;
++              azx_stream(get_azx_dev(substream))->stripe = 0;
++
+               mutex_lock(&spec->pcm_lock);
+               snd_hda_spdif_ctls_unassign(codec, pcm_idx);
+               clear_bit(pcm_idx, &spec->pcm_in_use);
index 429b7e9b73a42d54744c374696cce787034283f9..728abdfb66426d2ceb585342fc5643f83396f6f0 100644 (file)
@@ -78,3 +78,4 @@ drm-amdgpu-gfx10-re-init-clear-state-buffer-after-gpu-reset.patch
 drm-i915-gvt-fix-cmd-length-check-for-mi_atomic.patch
 drm-amdgpu-avoid-using-invalidate-semaphore-for-picasso.patch
 drm-amdgpu-add-invalidate-semaphore-limit-for-sriov-and-picasso-in-gmc9.patch
+alsa-hda-fix-regression-by-strip-mask-fix.patch