Commit 74bf71ed authored by Samuel Thibault's avatar Samuel Thibault Committed by Takashi Iwai

ALSA: hda: Fix 1-minute detection delay when i915 module is not available

Distribution installation images such as Debian include different sets
of modules which can be downloaded dynamically.  Such images may notably
include the hda sound modules but not the i915 DRM module, even if the
latter was enabled at build time, as reported on
https://bugs.debian.org/931507

In such a case hdac_i915 would be linked in and try to load the i915
module, fail since it is not there, but still wait for a whole minute
before giving up binding with it.

This fixes such as case by only waiting for the binding if the module
was properly loaded (or module support is disabled, in which case i915
is already compiled-in anyway).

Fixes: f9b54e19 ("ALSA: hda/i915: Allow delayed i915 audio component binding")
Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 3f880949
...@@ -136,10 +136,12 @@ int snd_hdac_i915_init(struct hdac_bus *bus) ...@@ -136,10 +136,12 @@ int snd_hdac_i915_init(struct hdac_bus *bus)
if (!acomp) if (!acomp)
return -ENODEV; return -ENODEV;
if (!acomp->ops) { if (!acomp->ops) {
request_module("i915"); if (!IS_ENABLED(CONFIG_MODULES) ||
/* 60s timeout */ !request_module("i915")) {
wait_for_completion_timeout(&bind_complete, /* 60s timeout */
msecs_to_jiffies(60 * 1000)); wait_for_completion_timeout(&bind_complete,
msecs_to_jiffies(60 * 1000));
}
} }
if (!acomp->ops) { if (!acomp->ops) {
dev_info(bus->dev, "couldn't bind with audio component\n"); dev_info(bus->dev, "couldn't bind with audio component\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment