diff options
| author | Sergey Tiraspolsky <stiraspo@gmail.com> | 2026-10-10 03:37:53 -0700 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-12 18:59:55 +0100 |
| commit | f6be9f558a83fe30a03bd3adae461c821a0cef8c (patch) | |
| tree | 59e7bf3c15d983096c55e959c49c881cf77f7d6b /scripts/Makefile.thinlto | |
| parent | f90f8afb61beb268ca8092e7f3a826b520d3e8da (diff) | |
| download | linux-f6be9f558a83fe30a03bd3adae461c821a0cef8c.tar.gz linux-f6be9f558a83fe30a03bd3adae461c821a0cef8c.zip | |
ASoC: Intel: avs: Reset the stream unless it is already prepared
Commit cfca1637bc2b ("ASoC: Intel: avs: Unprepare a stream when XRUN
occurs") resets the HDA stream when ->prepare() is called in the XRUN
state. User space does not always recover that way. PipeWire's ALSA
backend recovers from an underrun with snd_pcm_drop(), snd_pcm_prepare()
and a new start, so ->prepare() runs in the SETUP state,
hdac_stream->prepared is still set and the reset is skipped. Every
recovery attempt then fails the same way:
spa.alsa: hw:avsmax98927,1p: snd_pcm_avail after recover: Broken pipe
On a Google Pixelbook (Kaby Lake, max98927 speakers) this happens after
an occasional underrun during normal playback and silences the speakers
for one to four minutes, until the PCM is closed. It can be provoked by
stopping PipeWire with SIGSTOP for 0.5 s during playback: in one run
that single underrun led to 1297 failed recoveries over two minutes,
until the sink was suspended. A plain alsa-lib program that recovers
with snd_pcm_drop() and snd_pcm_prepare() hits the same loop, while
snd_pcm_prepare() straight from XRUN recovers at once.
Skip the reset only when the stream is already PREPARED, the repeated
->prepare() case the check exists for, and reset it otherwise. With
this change both kinds of recovery succeed with a single restart.
Fixes: cfca1637bc2b ("ASoC: Intel: avs: Unprepare a stream when XRUN occurs")
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Sergey Tiraspolsky <stiraspo@gmail.com>
Acked-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://patch.msgid.link/20261010103753.16969-1-stiraspo@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
