| From af92c237446476041c5d0a928df27a9f4b02aa02 Mon Sep 17 00:00:00 2001 |
| From: Kai Vehmanen <kai.vehmanen@linux.intel.com> |
| Date: Mon, 20 Jan 2020 18:01:17 +0200 |
| Subject: [PATCH] ALSA: hda/hdmi - add retry logic to parse_intel_hdmi() |
| |
| commit 2928fa0a97ebb9549cb877fdc99aed9b95438c3a upstream. |
| |
| 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@linux.intel.com> |
| Reviewed-by: Takashi Iwai <tiwai@suse.de> |
| Link: https://lore.kernel.org/r/20200120160117.29130-4-kai.vehmanen@linux.intel.com |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c |
| index d44630642a61..916d8c803bdb 100644 |
| --- a/sound/pci/hda/patch_hdmi.c |
| +++ b/sound/pci/hda/patch_hdmi.c |
| @@ -2641,9 +2641,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.7.4 |
| |