acrn-kernel/sound/usb
Takashi Iwai 198dde085e ALSA: usb-audio: Workaround for XRUN at prepare
Under certain situations (typically in the implicit feedback mode),
USB-audio driver starts a playback stream already at PCM prepare call
even before the actual PCM trigger-START call.  For implicit feedback
mode, this effectively starts two streams for data and sync
endpoints, and if a coupled sync stream gets XRUN at this point, it
results in an error -EPIPE.

The problem is that currently we return -EPIPE error as is from the
prepare.  Then application tries to recover again via the prepare
call, but it'll fail again because the sync-stop is missing.  The
sync-stop is missing because it's an internal trigger call (hence the
PCM core isn't involved).

Since we'll need to re-issue the prepare in anyway when trapped into
this pitfall, this patch attempts to address it in a bit different
way; namely, the driver tries to prepare once again after syncing the
stop manually by itself -- so applications don't see the internal
error.  At the second failure, we report the error as is, but this
shouldn't happen in normal situations.

Reported-and-tested-by: Carl Hetherington <lists@carlh.net>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/b4e71631-4a94-613-27b2-fb595792630@carlh.net
Link: https://lore.kernel.org/r/20221205132124.11585-4-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2022-12-05 14:22:48 +01:00
..
6fire ALSA: usb/6fire: fix repeated words in comments 2022-07-25 08:28:17 +02:00
bcd2000 ALSA: bcd2000: Fix a UAF bug on the error path of probing 2022-07-15 08:58:36 +02:00
caiaq
hiface ALSA: hiface: fix repeated words in comments 2022-07-25 08:28:37 +02:00
line6 ALSA: line6: remove line6_set_raw declaration 2022-09-09 09:09:20 +02:00
misc
usx2y ALSA: usx2y: Replace runtime->status->state reference to runtime->state 2022-09-27 08:48:34 +02:00
Kconfig
Makefile
card.c ALSA: usb-audio: Yet more regression for for the delayed card registration 2022-11-08 07:59:30 +01:00
card.h ALSA: usb-audio: Avoid superfluous endpoint setup 2022-10-09 12:43:26 +02:00
clock.c ALSA: usb-audio: Optimize TEAC clock quirk 2022-05-31 15:09:05 +02:00
clock.h
endpoint.c ALSA: usb-audio: Add quirk for Tascam Model 12 2022-11-29 15:04:17 +01:00
endpoint.h ALSA: usb-audio: Split endpoint setups for hw_params and prepare (take#2) 2022-09-20 20:12:34 +02:00
format.c
format.h
helper.c
helper.h
implicit.c ALSA: usb-audio: Add quirks for M-Audio Fast Track C400/600 2022-10-21 14:29:50 +02:00
implicit.h
media.c
media.h
midi.c ALSA: usb-audio: Drop snd_BUG_ON() from snd_usbmidi_output_open() 2022-11-12 15:13:01 +01:00
midi.h
mixer.c ALSA: usb-audio: Use snd_ctl_rename() to rename a control 2022-10-21 08:17:08 +02:00
mixer.h
mixer_maps.c ALSA: usb-audio: More comprehensive mixer map for ASUS ROG Zenith II 2022-08-09 13:28:41 +02:00
mixer_quirks.c ALSA: scarlett2: Add Focusrite Clarett+ 8Pre support 2022-08-09 09:24:38 +02:00
mixer_quirks.h
mixer_s1810c.c
mixer_s1810c.h
mixer_scarlett.c
mixer_scarlett.h
mixer_scarlett_gen2.c ALSA: scarlett2: Add Focusrite Clarett+ 8Pre support 2022-08-09 09:24:38 +02:00
mixer_scarlett_gen2.h
mixer_us16x08.c ALSA: usb-audio: US16x08: Move overflow check before array access 2022-06-13 07:40:08 +02:00
mixer_us16x08.h
pcm.c ALSA: usb-audio: Workaround for XRUN at prepare 2022-12-05 14:22:48 +01:00
pcm.h
power.c
power.h
proc.c
proc.h
quirks-table.h ALSA: usb-audio: Add quirk entry for M-Audio Micro 2022-11-08 15:07:49 +01:00
quirks.c ALSA: usb-audio: Add quirk for Tascam Model 12 2022-11-29 15:04:17 +01:00
quirks.h ALSA: usb-audio: Register card at the last interface 2022-09-06 11:04:56 +02:00
stream.c Merge branch 'for-linus' into for-next 2022-09-06 11:04:15 +02:00
stream.h
usbaudio.h ALSA: usb-audio: Add quirk for Tascam Model 12 2022-11-29 15:04:17 +01:00
validate.c