On Mon, 20 Jan 2020 17:01:17 +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@linux.intel.com Reviewed-by: Takashi Iwai tiwai@suse.de
It seems that this felt out of Mark's hands, so I picked up now to my tree, as this doesn't seem depending on other changes.
Now applied to for-next branch.
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 630b1f5c276d..a4b75a9dfe3b 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -2830,9 +2830,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