From: Cezary Rojewski <cezary.rojewski@intel.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
<alsa-devel@alsa-project.org>, <broonie@kernel.org>
Cc: hdegoede@redhat.com, amadeuszx.slawinski@linux.intel.com, tiwai@suse.com
Subject: Re: [PATCH] ASoC: core: Exit all links before removing their components
Date: Tue, 21 Jun 2022 16:53:58 +0200 [thread overview]
Message-ID: <1cff4ac0-6d45-95e1-ed9f-6abaded3f8b7@intel.com> (raw)
In-Reply-To: <24925485-9d0b-74c3-1e7f-b4906a3314ac@linux.intel.com>
On 2022-06-21 3:31 PM, Pierre-Louis Bossart wrote:
> On 6/21/22 06:57, Cezary Rojewski wrote:
>> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
>> index 4a3fca50a536..638e781df3b0 100644
>> --- a/sound/soc/soc-core.c
>> +++ b/sound/soc/soc-core.c
>> @@ -935,9 +935,6 @@ void snd_soc_remove_pcm_runtime(struct snd_soc_card *card,
>> {
>> lockdep_assert_held(&client_mutex);
>>
>> - /* release machine specific resources */
>> - snd_soc_link_exit(rtd);
>> -
>> /*
>> * Notify the machine driver for extra destruction
>> */
>
> .... what is not shown here is the
>
> soc_free_pcm_runtime(rtd);
>
> which will call device_unregister(rtd->dev);
>
> ....
>
>> @@ -1888,6 +1885,9 @@ static void soc_cleanup_card_resources(struct snd_soc_card *card)
>>
>> snd_soc_dapm_shutdown(card);
>>
>> + /* release machine specific resources */
>> + for_each_card_rtds(card, rtd)
>> + snd_soc_link_exit(rtd);
>
> ... so there's still a risk that the link exit refers to memory that's
> been released already.
>
> We would need to make sure rtd->dev is not used in any of the existing
> callbacks - or other functions such as e.g. snd_soc_close_delayed_work()
> which makes use of rtd->dev
>
The lack of soc_free_pcm_runtime() included here is done on purpose.
After revisiting probe and remove flows it seems that there are more
de-synchronization than just link->init() and link->exit(). However, I
believe providing incremental changes is better than providing one
single big patch which has much larger impact of the framework. Moving
just the snd_soc_link_exit() has very limited impact.
In regard to the flow, we have to remember that 'someone' has to be the
first one, 'someone' has to be the last one too. If the probe flow ends
with link->init() (for the selected range of functions), then it feels
natural for remove flow to begin with link->exit().
I've scanned the repo for usages of link->exit() and it seems only Intel
platforms do so. Given their (functions) current content, status quo is
achieved. AVS and CATPT drivers reload-tests show no regression too. The
DAPM-pin warning I'd mentioned earlier in the bdw_rt286 discussion is
also gone.
Regards,
Czarek
next prev parent reply other threads:[~2022-06-21 14:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-21 11:57 [PATCH] ASoC: core: Exit all links before removing their components Cezary Rojewski
2022-06-21 13:31 ` Pierre-Louis Bossart
2022-06-21 14:53 ` Cezary Rojewski [this message]
2022-07-08 7:50 ` Cezary Rojewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1cff4ac0-6d45-95e1-ed9f-6abaded3f8b7@intel.com \
--to=cezary.rojewski@intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=amadeuszx.slawinski@linux.intel.com \
--cc=broonie@kernel.org \
--cc=hdegoede@redhat.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox