[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1492ba0c-73af-b43c-2d23-fc9e63bdc506@linux.intel.com>
Date: Fri, 15 Oct 2021 06:02:51 -0500
From: Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>
To: Sameer Pujar <spujar@...dia.com>, alsa-devel@...a-project.org
Cc: Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>,
tiwai@...e.de, open list <linux-kernel@...r.kernel.org>,
Takashi Iwai <tiwai@...e.com>,
Liam Girdwood <lgirdwood@...il.com>, vkoul@...nel.org,
broonie@...nel.org, Gyeongtaek Lee <gt82.lee@...sung.com>,
Peter Ujfalusi <peter.ujfalusi@...ux.intel.com>
Subject: Re: [RFC PATCH v3 07/13] ASoC: soc-pcm: protect for_each_dpcm_be()
loops
On 10/15/21 1:24 AM, Sameer Pujar wrote:
>
>
> On 10/13/2021 8:00 PM, Pierre-Louis Bossart wrote:
>> The D in DPCM stands for 'dynamic', which means that connections
>> between FE and BE can evolve.
>>
>> Commit a97648697790 ("ASoC: dpcm: prevent snd_soc_dpcm use after
>> free") started to protect some of the for_each_dpcm_be() loops, but
>> there are still many cases that were not modified.
>>
>> This patch adds protection for all the remaining loops, with the
>> notable exception of the dpcm_be_dai_trigger(), where the lock is
>> already taken at a higher level, e.g. in snd_pcm_period_elapsed().
>>
>> Signed-off-by: Pierre-Louis Bossart
>> <pierre-louis.bossart@...ux.intel.com>
>> ---
>> sound/soc/soc-pcm.c | 86 ++++++++++++++++++++-------------------------
>> 1 file changed, 39 insertions(+), 47 deletions(-)
>
> After this, once I load sound card there are warning prints and failure:
>
> [ 71.224324] WARNING: CPU: 3 PID: 574 at
> drivers/firmware/tegra/bpmp.c:362 tegra_bpmp_transfer+0x2d0/0x328
> [ 71.238032] ---[ end trace 88d978f78a82134f ]---
> [ 71.243033] WARNING: CPU: 3 PID: 574 at
> drivers/firmware/tegra/bpmp.c:362 tegra_bpmp_transfer+0x2d0/0x328
> [ 71.257022] ---[ end trace 88d978f78a821350 ]---
> [ 71.261965] tegra-audio-graph-card sound: Can't set plla rate for
> 270950400, err: -22
> ...
>
>
> This happens because, now the atomicity is propagated to BE callbacks
> where the clock settings are done in hw_param(). On Tegra, the clock
> APIs are served by BPMP and warning is seen because of below.
Sorry, I don't understand this part.
if the FEs used on Tegra have the nonatomic property set to zero,
nothing will be propagated really.
This patch was required on the Intel side, because ALL FEs are nonatomic
but some BEs are not, so I had issues when connecting a nonatomic FE to
an atomic BE. See e.g.
https://github.com/thesofproject/linux/pull/3209#issuecomment-941229502
Powered by blists - more mailing lists