]> Git Repo - linux.git/commit
ASoC: soc-pcm: Fix and cleanup DPCM locking
authorTakashi Iwai <[email protected]>
Tue, 7 Dec 2021 17:37:42 +0000 (11:37 -0600)
committerMark Brown <[email protected]>
Tue, 14 Dec 2021 17:15:45 +0000 (17:15 +0000)
commitb7898396f4bbe160f546d0c5e9fa17cca9a7d153
treea5c9444e4a461bdf7b7e819f2c9ef23ed7a46ddb
parentbbf7d3b1c4f40eb02dd1dffb500ba00b0bff0303
ASoC: soc-pcm: Fix and cleanup DPCM locking

The existing locking for DPCM has several issues
a) a confusing mix of card->mutex and card->pcm_mutex.
b) a dpcm_lock spinlock added inconsistently and on paths that could
be recursively taken. The use of irqsave/irqrestore was also overkill.

The suggested model is:

1) The pcm_mutex is the top-most protection of BE links in the FE. The
pcm_mutex is applied always on either the top PCM callbacks or the
external call from DAPM, not taken in the internal functions.

2) the FE stream lock is taken in higher levels before invoking
dpcm_be_dai_trigger()

3) when adding and deleting a BE, both the pcm_mutex and FE stream
lock are taken.

Signed-off-by: Takashi Iwai <[email protected]>
[clarification of commit message by plbossart]
Signed-off-by: Pierre-Louis Bossart <[email protected]>
Reviewed-by: Kai Vehmanen <[email protected]>
Reviewed-by: Bard Liao <[email protected]>
Reviewed-by: Ranjani Sridharan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
include/sound/soc.h
sound/soc/soc-core.c
sound/soc/soc-pcm.c
This page took 0.058625 seconds and 4 git commands to generate.