From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752498AbdFUPJF (ORCPT ); Wed, 21 Jun 2017 11:09:05 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:35981 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751711AbdFUPJD (ORCPT ); Wed, 21 Jun 2017 11:09:03 -0400 From: Daniel Vetter To: Intel Graphics Development Cc: Chris Wilson , Daniel Vetter , Jaroslav Kysela , Takashi Iwai , Guneshwor Singh , Hardik T Shah , Julia Lawall , Vinod Koul , "Subhransu S. Prusty" , Libin Yang , linux-kernel@vger.kernel.org Subject: [PATCH] BUG-REPORT: snd-hda: hacked-together EPROBE_DEFER support Date: Wed, 21 Jun 2017 17:08:54 +0200 Message-Id: <1498057734-14622-1-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.5.5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org So back when the i915 power well support landed in commit 99a2008d0b32d72dfc2a54e7be1eb698dd2e3bd6 Author: Wang Xingchao Date: Thu May 30 22:07:10 2013 +0800 ALSA: hda - Add power-welll support for haswell HDA the logic to handle the cross-module depencies was hand-rolled using a async work item, and that just doesn't work. The correct way to handle cross-module deps is either: - request_module + failing when the other module isn't there OR - failing the module load with EPROBE_DEFER. You can't mix them, if you do then the entire load path just busy-spins blowing through cpu cycles forever with no way to stop this. snd-hda-intel does mix it, because the hda codec drivers are loaded using request_module, but the i915 depency is handled using PROBE_DEFER (or well, should be, but I haven't found any code at all). This is a major pain when trying to debug i915 load failures. This patch here is a horrible hackish attempt at somewhat correctly wriing EPROBE_DEFER through. Stuff that's missing: - Check all the other places where load errors are conveniently dropped on the floor. - Also fix up the firmware_cb path. - Drop the debug noise I've left in to make it clear this isn't anything for merging. Cheers, Daniel Cc: Jaroslav Kysela Cc: Takashi Iwai Cc: "GitAuthor: Daniel Vetter" Cc: Guneshwor Singh Cc: Hardik T Shah Cc: Julia Lawall Cc: Vinod Koul Cc: "Subhransu S. Prusty" Cc: Libin Yang Cc: linux-kernel@vger.kernel.org --- drivers/base/dd.c | 2 ++ sound/pci/hda/hda_bind.c | 6 +++--- sound/pci/hda/hda_controller.c | 8 +++++++- sound/pci/hda/hda_intel.c | 13 +++++++++---- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 4882f06d12df..842bc8782124 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -17,6 +17,8 @@ * This file is released under the GPLv2 */ +#define DEBUG + #include #include #include diff --git a/sound/pci/hda/hda_bind.c b/sound/pci/hda/hda_bind.c index 6efadbfb3fe3..0bc164a17493 100644 --- a/sound/pci/hda/hda_bind.c +++ b/sound/pci/hda/hda_bind.c @@ -253,7 +253,7 @@ static int codec_bind_generic(struct hda_codec *codec) request_codec_module(codec); if (codec_probed(codec)) return 0; - return -ENODEV; + return -EPROBE_DEFER; } #if IS_ENABLED(CONFIG_SND_HDA_GENERIC) @@ -289,8 +289,8 @@ int snd_hda_codec_configure(struct hda_codec *codec) codec_bind_module(codec); if (!codec->preset) { err = codec_bind_generic(codec); - if (err < 0) { - codec_err(codec, "Unable to bind the codec\n"); + if (WARN_ON(err < 0)) { + codec_err(codec, "Unable to bind the codec, err=%i\n", err); goto error; } } diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c index 3715a5725613..4b4262c72327 100644 --- a/sound/pci/hda/hda_controller.c +++ b/sound/pci/hda/hda_controller.c @@ -1337,9 +1337,15 @@ EXPORT_SYMBOL_GPL(azx_probe_codecs); /* configure each codec instance */ int azx_codec_configure(struct azx *chip) { + int ret; + struct hda_codec *codec; list_for_each_codec(codec, &chip->bus) { - snd_hda_codec_configure(codec); + ret = snd_hda_codec_configure(codec); + if (ret) { + printk("bailing real hard %i\n", ret); + return ret; + } } return 0; } diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 07ea7f48aa01..8241387cc8ca 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1649,7 +1649,8 @@ static void azx_check_snoop_available(struct azx *chip) static void azx_probe_work(struct work_struct *work) { struct hda_intel *hda = container_of(work, struct hda_intel, probe_work); - azx_probe_continue(&hda->chip); + + WARN_ON(1); } static int default_bdl_pos_adj(struct azx *chip) @@ -2158,7 +2159,6 @@ static int azx_probe(struct pci_dev *pci, azx_firmware_cb); if (err < 0) goto out_free; - schedule_probe = false; /* continued in azx_firmware_cb() */ } #endif /* CONFIG_SND_HDA_PATCH_LOADER */ @@ -2167,8 +2167,13 @@ static int azx_probe(struct pci_dev *pci, dev_err(card->dev, "Haswell/Broadwell HDMI/DP must build in CONFIG_SND_HDA_I915\n"); #endif - if (schedule_probe) - schedule_work(&hda->probe_work); + if (schedule_probe) { + err = azx_probe_continue(chip); + if (err) { + printk("hit the right error return finally! err=%i\n", err); + goto out_free; + } + } dev++; if (chip->disabled) -- 2.5.5 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH] BUG-REPORT: snd-hda: hacked-together EPROBE_DEFER support Date: Wed, 21 Jun 2017 17:08:54 +0200 Message-ID: <1498057734-14622-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CAA289F06 for ; Wed, 21 Jun 2017 15:09:03 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id u62so21866546lfg.0 for ; Wed, 21 Jun 2017 08:09:03 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel Graphics Development Cc: Vinod Koul , Daniel Vetter , Guneshwor Singh , Takashi Iwai , Jaroslav Kysela , Julia Lawall , Hardik T Shah , "Subhransu S. Prusty" , linux-kernel@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org U28gYmFjayB3aGVuIHRoZSBpOTE1IHBvd2VyIHdlbGwgc3VwcG9ydCBsYW5kZWQgaW4KCmNvbW1p dCA5OWEyMDA4ZDBiMzJkNzJkZmMyYTU0ZTdiZTFlYjY5OGRkMmUzYmQ2CkF1dGhvcjogV2FuZyBY aW5nY2hhbyA8eGluZ2NoYW8ud2FuZ0BsaW51eC5pbnRlbC5jb20+CkRhdGU6ICAgVGh1IE1heSAz MCAyMjowNzoxMCAyMDEzICswODAwCgogICAgQUxTQTogaGRhIC0gQWRkIHBvd2VyLXdlbGxsIHN1 cHBvcnQgZm9yIGhhc3dlbGwgSERBCgp0aGUgbG9naWMgdG8gaGFuZGxlIHRoZSBjcm9zcy1tb2R1 bGUgZGVwZW5jaWVzIHdhcyBoYW5kLXJvbGxlZCB1c2luZyBhCmFzeW5jIHdvcmsgaXRlbSwgYW5k IHRoYXQganVzdCBkb2Vzbid0IHdvcmsuCgpUaGUgY29ycmVjdCB3YXkgdG8gaGFuZGxlIGNyb3Nz LW1vZHVsZSBkZXBzIGlzIGVpdGhlcjoKLSByZXF1ZXN0X21vZHVsZSArIGZhaWxpbmcgd2hlbiB0 aGUgb3RoZXIgbW9kdWxlIGlzbid0IHRoZXJlCgpPUgoKLSBmYWlsaW5nIHRoZSBtb2R1bGUgbG9h ZCB3aXRoIEVQUk9CRV9ERUZFUi4KCllvdSBjYW4ndCBtaXggdGhlbSwgaWYgeW91IGRvIHRoZW4g dGhlIGVudGlyZSBsb2FkIHBhdGgganVzdApidXN5LXNwaW5zIGJsb3dpbmcgdGhyb3VnaCBjcHUg Y3ljbGVzIGZvcmV2ZXIgd2l0aCBubyB3YXkgdG8gc3RvcAp0aGlzLgoKc25kLWhkYS1pbnRlbCBk b2VzIG1peCBpdCwgYmVjYXVzZSB0aGUgaGRhIGNvZGVjIGRyaXZlcnMgYXJlIGxvYWRlZAp1c2lu ZyByZXF1ZXN0X21vZHVsZSwgYnV0IHRoZSBpOTE1IGRlcGVuY3kgaXMgaGFuZGxlZCB1c2luZwpQ Uk9CRV9ERUZFUiAob3Igd2VsbCwgc2hvdWxkIGJlLCBidXQgSSBoYXZlbid0IGZvdW5kIGFueSBj b2RlIGF0IGFsbCkuClRoaXMgaXMgYSBtYWpvciBwYWluIHdoZW4gdHJ5aW5nIHRvIGRlYnVnIGk5 MTUgbG9hZCBmYWlsdXJlcy4KClRoaXMgcGF0Y2ggaGVyZSBpcyBhIGhvcnJpYmxlIGhhY2tpc2gg YXR0ZW1wdCBhdCBzb21ld2hhdCBjb3JyZWN0bHkKd3JpaW5nIEVQUk9CRV9ERUZFUiB0aHJvdWdo LiBTdHVmZiB0aGF0J3MgbWlzc2luZzoKLSBDaGVjayBhbGwgdGhlIG90aGVyIHBsYWNlcyB3aGVy ZSBsb2FkIGVycm9ycyBhcmUgY29udmVuaWVudGx5CiAgZHJvcHBlZCBvbiB0aGUgZmxvb3IuCi0g QWxzbyBmaXggdXAgdGhlIGZpcm13YXJlX2NiIHBhdGguCi0gRHJvcCB0aGUgZGVidWcgbm9pc2Ug SSd2ZSBsZWZ0IGluIHRvIG1ha2UgaXQgY2xlYXIgdGhpcyBpc24ndAogIGFueXRoaW5nIGZvciBt ZXJnaW5nLgoKQ2hlZXJzLCBEYW5pZWwKCkNjOiBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4 LmN6PgpDYzogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmNvbT4KQ2M6ICJHaXRBdXRob3I6IERh bmllbCBWZXR0ZXIiIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogR3VuZXNod29yIFNpbmdo IDxndW5lc2h3b3Iuby5zaW5naEBpbnRlbC5jb20+CkNjOiBIYXJkaWsgVCBTaGFoIDxoYXJkaWsu dC5zaGFoQGludGVsLmNvbT4KQ2M6IEp1bGlhIExhd2FsbCA8SnVsaWEuTGF3YWxsQGxpcDYuZnI+ CkNjOiBWaW5vZCBLb3VsIDx2aW5vZC5rb3VsQGludGVsLmNvbT4KQ2M6ICJTdWJocmFuc3UgUy4g UHJ1c3R5IiA8c3ViaHJhbnN1LnMucHJ1c3R5QGludGVsLmNvbT4KQ2M6IExpYmluIFlhbmcgPGxp YmluLnlhbmdAaW50ZWwuY29tPgpDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwotLS0K IGRyaXZlcnMvYmFzZS9kZC5jICAgICAgICAgICAgICB8ICAyICsrCiBzb3VuZC9wY2kvaGRhL2hk YV9iaW5kLmMgICAgICAgfCAgNiArKystLS0KIHNvdW5kL3BjaS9oZGEvaGRhX2NvbnRyb2xsZXIu YyB8ICA4ICsrKysrKystCiBzb3VuZC9wY2kvaGRhL2hkYV9pbnRlbC5jICAgICAgfCAxMyArKysr KysrKystLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2RkLmMgYi9kcml2ZXJzL2Jhc2UvZGQuYwpp bmRleCA0ODgyZjA2ZDEyZGYuLjg0MmJjODc4MjEyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNl L2RkLmMKKysrIGIvZHJpdmVycy9iYXNlL2RkLmMKQEAgLTE3LDYgKzE3LDggQEAKICAqIFRoaXMg ZmlsZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMdjIKICAqLwogCisjZGVmaW5lIERFQlVHCisK ICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2lu Y2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL2hk YV9iaW5kLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9iaW5kLmMKaW5kZXggNmVmYWRiZmIzZmUzLi4w YmMxNjRhMTc0OTMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvaGRhX2JpbmQuYworKysgYi9z b3VuZC9wY2kvaGRhL2hkYV9iaW5kLmMKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgaW50IGNv ZGVjX2JpbmRfZ2VuZXJpYyhzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKIAlyZXF1ZXN0X2NvZGVj X21vZHVsZShjb2RlYyk7CiAJaWYgKGNvZGVjX3Byb2JlZChjb2RlYykpCiAJCXJldHVybiAwOwot CXJldHVybiAtRU5PREVWOworCXJldHVybiAtRVBST0JFX0RFRkVSOwogfQogCiAjaWYgSVNfRU5B QkxFRChDT05GSUdfU05EX0hEQV9HRU5FUklDKQpAQCAtMjg5LDggKzI4OSw4IEBAIGludCBzbmRf aGRhX2NvZGVjX2NvbmZpZ3VyZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKIAkJY29kZWNfYmlu ZF9tb2R1bGUoY29kZWMpOwogCWlmICghY29kZWMtPnByZXNldCkgewogCQllcnIgPSBjb2RlY19i aW5kX2dlbmVyaWMoY29kZWMpOwotCQlpZiAoZXJyIDwgMCkgewotCQkJY29kZWNfZXJyKGNvZGVj LCAiVW5hYmxlIHRvIGJpbmQgdGhlIGNvZGVjXG4iKTsKKwkJaWYgKFdBUk5fT04oZXJyIDwgMCkp IHsKKwkJCWNvZGVjX2Vycihjb2RlYywgIlVuYWJsZSB0byBiaW5kIHRoZSBjb2RlYywgZXJyPSVp XG4iLCBlcnIpOwogCQkJZ290byBlcnJvcjsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL3Bj aS9oZGEvaGRhX2NvbnRyb2xsZXIuYyBiL3NvdW5kL3BjaS9oZGEvaGRhX2NvbnRyb2xsZXIuYwpp bmRleCAzNzE1YTU3MjU2MTMuLjRiNDI2MmM3MjMyNyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2hk YS9oZGFfY29udHJvbGxlci5jCisrKyBiL3NvdW5kL3BjaS9oZGEvaGRhX2NvbnRyb2xsZXIuYwpA QCAtMTMzNyw5ICsxMzM3LDE1IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGF6eF9wcm9iZV9jb2RlY3Mp OwogLyogY29uZmlndXJlIGVhY2ggY29kZWMgaW5zdGFuY2UgKi8KIGludCBhenhfY29kZWNfY29u ZmlndXJlKHN0cnVjdCBhenggKmNoaXApCiB7CisJaW50IHJldDsKKwogCXN0cnVjdCBoZGFfY29k ZWMgKmNvZGVjOwogCWxpc3RfZm9yX2VhY2hfY29kZWMoY29kZWMsICZjaGlwLT5idXMpIHsKLQkJ c25kX2hkYV9jb2RlY19jb25maWd1cmUoY29kZWMpOworCQlyZXQgPSBzbmRfaGRhX2NvZGVjX2Nv bmZpZ3VyZShjb2RlYyk7CisJCWlmIChyZXQpIHsKKwkJCXByaW50aygiYmFpbGluZyByZWFsIGhh cmQgJWlcbiIsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CiAJfQogCXJldHVybiAwOwogfQpk aWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYyBiL3NvdW5kL3BjaS9oZGEvaGRh X2ludGVsLmMKaW5kZXggMDdlYTdmNDhhYTAxLi44MjQxMzg3Y2M4Y2EgMTAwNjQ0Ci0tLSBhL3Nv dW5kL3BjaS9oZGEvaGRhX2ludGVsLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYwpA QCAtMTY0OSw3ICsxNjQ5LDggQEAgc3RhdGljIHZvaWQgYXp4X2NoZWNrX3Nub29wX2F2YWlsYWJs ZShzdHJ1Y3QgYXp4ICpjaGlwKQogc3RhdGljIHZvaWQgYXp4X3Byb2JlX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBoZGFfaW50ZWwgKmhkYSA9IGNvbnRhaW5lcl9v Zih3b3JrLCBzdHJ1Y3QgaGRhX2ludGVsLCBwcm9iZV93b3JrKTsKLQlhenhfcHJvYmVfY29udGlu dWUoJmhkYS0+Y2hpcCk7CisKKwlXQVJOX09OKDEpOwogfQogCiBzdGF0aWMgaW50IGRlZmF1bHRf YmRsX3Bvc19hZGooc3RydWN0IGF6eCAqY2hpcCkKQEAgLTIxNTgsNyArMjE1OSw2IEBAIHN0YXRp YyBpbnQgYXp4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksCiAJCQkJCSAgICAgIGF6eF9maXJt d2FyZV9jYik7CiAJCWlmIChlcnIgPCAwKQogCQkJZ290byBvdXRfZnJlZTsKLQkJc2NoZWR1bGVf cHJvYmUgPSBmYWxzZTsgLyogY29udGludWVkIGluIGF6eF9maXJtd2FyZV9jYigpICovCiAJfQog I2VuZGlmIC8qIENPTkZJR19TTkRfSERBX1BBVENIX0xPQURFUiAqLwogCkBAIC0yMTY3LDggKzIx NjcsMTMgQEAgc3RhdGljIGludCBhenhfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSwKIAkJZGV2 X2VycihjYXJkLT5kZXYsICJIYXN3ZWxsL0Jyb2Fkd2VsbCBIRE1JL0RQIG11c3QgYnVpbGQgaW4g Q09ORklHX1NORF9IREFfSTkxNVxuIik7CiAjZW5kaWYKIAotCWlmIChzY2hlZHVsZV9wcm9iZSkK LQkJc2NoZWR1bGVfd29yaygmaGRhLT5wcm9iZV93b3JrKTsKKwlpZiAoc2NoZWR1bGVfcHJvYmUp IHsKKwkJZXJyID0gYXp4X3Byb2JlX2NvbnRpbnVlKGNoaXApOworCQlpZiAoZXJyKSB7CisJCQlw cmludGsoImhpdCB0aGUgcmlnaHQgZXJyb3IgcmV0dXJuIGZpbmFsbHkhIGVycj0laVxuIiwgZXJy KTsKKwkJCWdvdG8gb3V0X2ZyZWU7CisJCX0KKwl9CiAKIAlkZXYrKzsKIAlpZiAoY2hpcC0+ZGlz YWJsZWQpCi0tIAoyLjUuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==