android_kernel_samsung_sm8650/sound
Takashi Sakamoto 7ba5ca32fe ALSA: firewire-lib: operate for period elapse event in process context
All of drivers in ALSA firewire stack processes two chances to process
isochronous packets in any isochronous context; in software IRQ context
for 1394 OHCI, and in process context of ALSA PCM application.

In the process context, callbacks of .pointer and .ack are utilized. The
callbacks are done by ALSA PCM core under acquiring lock of PCM substream,

In design of ALSA PCM core, call of snd_pcm_period_elapsed() is used for
drivers to awaken user processes from waiting for available frames. The
function voluntarily acquires lock of PCM substream, therefore it is not
called in the process context since it causes dead lock.

As a workaround to avoid the dead lock, all of drivers in ALSA firewire
stack uses workqueue to delegate the call. A variant of
snd_pcm_period_elapsed() without lock acquisition can obsolete the
workqueue.

An extra care is needed for the callback of .pointer since it's called
from snd_pcm_period_elapsed(). The isochronous context in Linux FireWire
subsystem is safe mostly for nested call except in software IRQ context.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210610031733.56297-3-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-10 09:50:31 +02:00
..
ac97 ALSA: ac97: fix PM reference leak in ac97_bus_remove() 2021-05-25 08:59:08 +02:00
aoa ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
arm ARM updates for 5.12-rc1: 2021-02-22 14:27:07 -08:00
atmel ALSA: atmel: ac97: clarify operator precedence 2020-09-03 09:27:34 +02:00
core ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream 2021-06-10 09:49:54 +02:00
drivers ALSA: serial: Fix assignment in if condition 2021-06-09 17:30:34 +02:00
firewire ALSA: firewire-lib: operate for period elapse event in process context 2021-06-10 09:50:31 +02:00
hda ALSA: hda: Add AlderLake-M PCI ID 2021-05-30 09:33:08 +02:00
i2c ALSA: i2c: Fix assignment in if condition 2021-06-09 17:30:37 +02:00
isa ALSA: isa: Fix assignment in if condition 2021-06-09 17:29:48 +02:00
mips module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
oss sound/oss/dmasound: Remove superfluous "break" 2021-05-27 08:24:23 +02:00
parisc ALSA: parisc: Fix assignment in if condition 2021-06-09 17:30:39 +02:00
pci ALSA: ymfpci: Fix assignment in if condition 2021-06-09 17:30:21 +02:00
pcmcia ALSA: pcmcia: Fix assignment in if condition 2021-06-09 17:30:28 +02:00
ppc ALSA: poewrmac: Fix assignment in if condition 2021-06-09 17:30:36 +02:00
sh module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
soc Merge branch 'for-linus' into for-next 2021-06-08 14:02:06 +02:00
sparc ALSA: sparc: Fix assignment in if condition 2021-06-09 17:30:29 +02:00
spi
synth ALSA: synth: Fix assignment in if condition 2021-06-09 17:30:35 +02:00
usb ALSA: usb-audio: scarlett2: Read mux at init time 2021-06-08 14:02:43 +02:00
virtio ALSA: virtio: fix kernel-doc 2021-04-27 08:39:39 +02:00
x86 module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
xen module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
ac97_bus.c
Kconfig ALSA: virtio: add virtio sound driver 2021-03-07 09:07:16 +01:00
last.c
Makefile ALSA: virtio: add virtio sound driver 2021-03-07 09:07:16 +01:00
sound_core.c