* [PATCH v3 0/3] ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream
@ 2021-06-09 23:22 Takashi Sakamoto
2021-06-10 3:14 ` Takashi Sakamoto
0 siblings, 1 reply; 4+ messages in thread
From: Takashi Sakamoto @ 2021-06-09 23:22 UTC (permalink / raw)
To: tiwai; +Cc: alsa-devel, clemens
Hi,
This patchset is revised version of my previous one:
* https://lore.kernel.org/alsa-devel/20210609143145.146680-1-o-takashi@sakamocchi.jp/
All of drivers in ALSA firewire stack have two chances to process
isochronous packets of 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 use workqueue
to delegate the call.
This patchset is my attempt for the issue. A variant of
'snd_pcm_period_elapsed()' without lock acquisition is going to be added,
named 'snd_pcm_period_elapsed_under_stream_lock()'. The call is available
in callbacks of .pointer and .ack of snd_pcm_ops structure.
Changes from v2:
* delete context section from kernel API documentation
Takashi Sakamoto (3):
ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock
of PCM substream
ALSA: firewire-lib: operate for period elapse event in process context
ALSA: firewire-lib: obsolete workqueue for period update
include/sound/pcm.h | 1 +
sound/core/pcm_lib.c | 64 +++++++++++++++++++++++++++--------
sound/firewire/amdtp-stream.c | 46 ++++++++-----------------
sound/firewire/amdtp-stream.h | 1 -
4 files changed, 64 insertions(+), 48 deletions(-)
--
2.27.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/3] ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream
2021-06-09 23:22 [PATCH v3 0/3] ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream Takashi Sakamoto
@ 2021-06-10 3:14 ` Takashi Sakamoto
0 siblings, 0 replies; 4+ messages in thread
From: Takashi Sakamoto @ 2021-06-10 3:14 UTC (permalink / raw)
To: tiwai; +Cc: alsa-devel, clemens
Hi,
On Thu, Jun 10, 2021 at 08:22:27AM +0900, Takashi Sakamoto wrote:
> Hi,
>
> This patchset is revised version of my previous one:
> * https://lore.kernel.org/alsa-devel/20210609143145.146680-1-o-takashi@sakamocchi.jp/
>
> All of drivers in ALSA firewire stack have two chances to process
> isochronous packets of 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 use workqueue
> to delegate the call.
>
> This patchset is my attempt for the issue. A variant of
> 'snd_pcm_period_elapsed()' without lock acquisition is going to be added,
> named 'snd_pcm_period_elapsed_under_stream_lock()'. The call is available
> in callbacks of .pointer and .ack of snd_pcm_ops structure.
>
> Changes from v2:
> * delete context section from kernel API documentation
>
> Takashi Sakamoto (3):
> ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock
> of PCM substream
> ALSA: firewire-lib: operate for period elapse event in process context
> ALSA: firewire-lib: obsolete workqueue for period update
>
> include/sound/pcm.h | 1 +
> sound/core/pcm_lib.c | 64 +++++++++++++++++++++++++++--------
> sound/firewire/amdtp-stream.c | 46 ++++++++-----------------
> sound/firewire/amdtp-stream.h | 1 -
> 4 files changed, 64 insertions(+), 48 deletions(-)
>
> --
> 2.27.0
Mmm. 4 hours past but the rest of patchset is not delivered. I'll resend
them again just in case...
Regards
Takashi Sakamoto
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/3] ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream
2021-06-10 3:17 Takashi Sakamoto
@ 2021-06-10 7:51 ` Takashi Iwai
0 siblings, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2021-06-10 7:51 UTC (permalink / raw)
To: Takashi Sakamoto; +Cc: alsa-devel, clemens
On Thu, 10 Jun 2021 05:17:30 +0200,
Takashi Sakamoto wrote:
>
> Hi,
>
> This patchset is revised version of my previous one:
> * https://lore.kernel.org/alsa-devel/20210609143145.146680-1-o-takashi@sakamocchi.jp/
>
> All of drivers in ALSA firewire stack have two chances to process
> isochronous packets of 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 use workqueue
> to delegate the call.
>
> This patchset is my attempt for the issue. A variant of
> 'snd_pcm_period_elapsed()' without lock acquisition is going to be added,
> named 'snd_pcm_period_elapsed_under_stream_lock()'. The call is available
> in callbacks of .pointer and .ack of snd_pcm_ops structure.
>
> Changes from v2:
> * delete context section from kernel API documentation
>
> Takashi Sakamoto (3):
> ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock
> of PCM substream
> ALSA: firewire-lib: operate for period elapse event in process context
> ALSA: firewire-lib: obsolete workqueue for period update
Applied all three patches now. Thanks.
Takashi
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 0/3] ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream
@ 2021-06-10 3:17 Takashi Sakamoto
2021-06-10 7:51 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Takashi Sakamoto @ 2021-06-10 3:17 UTC (permalink / raw)
To: tiwai; +Cc: alsa-devel, clemens
Hi,
This patchset is revised version of my previous one:
* https://lore.kernel.org/alsa-devel/20210609143145.146680-1-o-takashi@sakamocchi.jp/
All of drivers in ALSA firewire stack have two chances to process
isochronous packets of 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 use workqueue
to delegate the call.
This patchset is my attempt for the issue. A variant of
'snd_pcm_period_elapsed()' without lock acquisition is going to be added,
named 'snd_pcm_period_elapsed_under_stream_lock()'. The call is available
in callbacks of .pointer and .ack of snd_pcm_ops structure.
Changes from v2:
* delete context section from kernel API documentation
Takashi Sakamoto (3):
ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock
of PCM substream
ALSA: firewire-lib: operate for period elapse event in process context
ALSA: firewire-lib: obsolete workqueue for period update
include/sound/pcm.h | 1 +
sound/core/pcm_lib.c | 64 +++++++++++++++++++++++++++--------
sound/firewire/amdtp-stream.c | 46 ++++++++-----------------
sound/firewire/amdtp-stream.h | 1 -
4 files changed, 64 insertions(+), 48 deletions(-)
--
2.27.0
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-06-10 7:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-09 23:22 [PATCH v3 0/3] ALSA: pcm: add snd_pcm_period_elapsed() variant without acquiring lock of PCM substream Takashi Sakamoto
2021-06-10 3:14 ` Takashi Sakamoto
2021-06-10 3:17 Takashi Sakamoto
2021-06-10 7:51 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.