[alsa-devel] [PATCH 3/3] ALSA: hda/hdmi - add retry logic to parse_intel_hdmi()

Takashi Iwai tiwai at suse.de
Thu Jan 16 16:11:36 CET 2020


On Thu, 16 Jan 2020 15:06:10 +0100,
Kai Vehmanen wrote:
> 
> The initial snd_hda_get_sub_node() can fail on certain
> devices (e.g. some Chromebook models using Intel GLK).
> The failure rate is very low, but as this is is part of
> the probe process, end-user impact is high.
> 
> In observed cases, related hardware status registers have
> expected values, but the node query still fails. Retrying
> the node query does seem to help, so fix the problem by
> adding retry logic to the query. This does not impact
> non-Intel platforms.
> 
> BugLink: https://github.com/thesofproject/linux/issues/1642
> Signed-off-by: Kai Vehmanen <kai.vehmanen at linux.intel.com>

Looks like a less ugly workaround.
I can take this, but maybe better together with other two, so Mark,
feel free to take through your tree.

Reviewed-by: Takashi Iwai <tiwai at suse.de>


thanks,

Takashi


> ---
>  sound/pci/hda/patch_hdmi.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index ce3c212ee467..48bddc218829 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -2833,9 +2833,12 @@ static int alloc_intel_hdmi(struct hda_codec *codec)
>  /* parse and post-process for Intel codecs */
>  static int parse_intel_hdmi(struct hda_codec *codec)
>  {
> -	int err;
> +	int err, retries = 3;
> +
> +	do {
> +		err = hdmi_parse_codec(codec);
> +	} while (err < 0 && retries--);
>  
> -	err = hdmi_parse_codec(codec);
>  	if (err < 0) {
>  		generic_spec_free(codec);
>  		return err;
> -- 
> 2.17.1
> 


More information about the Alsa-devel mailing list