[PATCH -next] ASoC: soc-component: using pm_runtime_resume_and_get instead of pm_runtime_get_sync

Maxime Ripard maxime at cerno.tech
Wed Oct 19 15:56:10 CEST 2022


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?

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20221019/ad586e3f/attachment.sig>


More information about the Alsa-devel mailing list