[PATCH -next] ASoC: soc-component: using pm_runtime_resume_and_get instead of pm_runtime_get_sync
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Wed Oct 19 15:59:58 CEST 2022
On 10/19/22 08:56, Maxime Ripard wrote:
> Hi,
>
> On Thu, Sep 22, 2022 at 10:58:46PM +0800, Zhang Qilong wrote:
>> Using the newest pm_runtime_resume_and_get is more appropriate
>> for simplifing code here.
>>
>> Signed-off-by: Zhang Qilong <zhangqilong3 at huawei.com>
>> ---
>> sound/soc/soc-component.c | 6 ++----
>> 1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c
>> index e12f8244242b..659b9ade4158 100644
>> --- a/sound/soc/soc-component.c
>> +++ b/sound/soc/soc-component.c
>> @@ -1213,11 +1213,9 @@ int snd_soc_pcm_component_pm_runtime_get(struct snd_soc_pcm_runtime *rtd,
>> int i;
>>
>> for_each_rtd_components(rtd, i, component) {
>> - int ret = pm_runtime_get_sync(component->dev);
>> - if (ret < 0 && ret != -EACCES) {
>> - pm_runtime_put_noidle(component->dev);
>> + int ret = pm_runtime_resume_and_get(component->dev);
>> + if (ret < 0 && ret != -EACCES)
>> return soc_component_ret(component, ret);
>> - }
>> /* mark stream if succeeded */
>> soc_component_mark_push(component, stream, pm);
>
> This creates an issue on the RaspberryPi4 on 6.1-rc1.
>
> At boot time, we now have a bunch of:
> [ 35.536496] hdmi-audio-codec hdmi-audio-codec.1.auto: Runtime PM usage count underflow!
>
> They were bisected back to that commit, and reverting it makes it go
> away.
>
> I think this is due to the fact that the function here used to call
> pm_runtime_put_noidle() only if there was an error, and that error
> wasn't EACCES. However, pm_runtime_resume_and_get() will call
> pm_runtime_put_noidle() for any error.
>
> Thus, if our __pm_runtime_resume() call return EACCES, we used to keep
> the our reference but we will now drop it. So I guess we should just
> revert it, possibly with a comment?
This is already reverted, see patch from Peter:
[PATCH] Revert "ASoC: soc-component: using pm_runtime_resume_and_get
instead of pm_runtime_get_sync"
More information about the Alsa-devel
mailing list