Re: [PATCH v2] ALSA: HDA: Early Forbid of runtime PM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 28 Aug 2020 01:05:36 +0200,
Harsha Priya wrote:
> 
> For certain codecs (like Realtek), pm_runtime_forbid() is invoked 
> in the probe function after build_controls(). In a stress test, 
> its observed occasionally that runtime PM calls are invoked 
> before controls are built. This causes the codec to be
> runtime suspended before probe completes. Because of this, not all
> controls are enumerated correctly, and audio does not work until
> system is rebooted.
> 
> This issue being common across all codecs, pm_runtime_forbid() is 
> called when the codec object is created to fix this issue. 
> A codec enables or disables runtime pm in its own probe function.
> 
> Multiple stress tests of 2000+ cycles has been done to test the fix.
> 
> Signed-off-by: Harsha Priya <harshapriya.n@xxxxxxxxx>
> Signed-off-by: Emmanuel Jillela <emmanuel.jillela@xxxxxxxxx>
> Reviewed-by: Kailang Yang <kailang@xxxxxxxxxxx>

Thanks.  The only concern is about the influence on the relevant ASoC
code, especially hdac_hda.c.

Kai, could you check whether this still works?


Takashi

> ---
>  sound/pci/hda/hda_codec.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> index e96a87f1b611..a356c21edb90 100644
> --- a/sound/pci/hda/hda_codec.c
> +++ b/sound/pci/hda/hda_codec.c
> @@ -1000,6 +1000,9 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
>  	if (err < 0)
>  		goto error;
>  
> +	/* PM runtime needs to be enabled later after binding codec */
> +	pm_runtime_forbid(&codec->core.dev);
> +
>  	return 0;
>  
>   error:
> -- 
> 2.17.1
> 



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux