]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
ALSA: hda/hdmi - add retry logic to parse_intel_hdmi()
authorKai Vehmanen <kai.vehmanen@linux.intel.com>
Mon, 20 Jan 2020 16:01:17 +0000 (18:01 +0200)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Tue, 7 Apr 2020 08:50:17 +0000 (10:50 +0200)
BugLink: https://bugs.launchpad.net/bugs/1867837
[ Upstream commit 2928fa0a97ebb9549cb877fdc99aed9b95438c3a ]

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: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
sound/pci/hda/patch_hdmi.c

index 4858e64899ad2352c995c87f1e48d9210cad0b46..4dffab80e5357f0b621809ea7b4e5c77084e8adf 100644 (file)
@@ -2578,9 +2578,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;