From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: usb: dwc2: Fix endless deferral probe From: Arnd Bergmann Message-Id: Date: Fri, 12 Jan 2018 00:32:57 +0100 To: Stefan Wahren Cc: Felipe Balbi , Florian Fainelli , John Youn , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Minas Harutyunyan , Kishon Vijay Abraham I , Eric Anholt , Linux ARM , Hans Verkuil List-ID: T24gV2VkLCBKYW4gMTAsIDIwMTggYXQgMToxNSBQTSwgU3RlZmFuIFdhaHJlbiA8c3RlZmFuLndh aHJlbkBpMnNlLmNvbT4gd3JvdGU6Cj4gSGkgQXJuZCwKPgo+Cj4gQW0gMDkuMDEuMjAxOCB1bSAy MjozMyBzY2hyaWViIEFybmQgQmVyZ21hbm46Cj4+Cj4+IE9uIFR1ZSwgSmFuIDksIDIwMTggYXQg ODoyOCBQTSwgU3RlZmFuIFdhaHJlbiA8c3RlZmFuLndhaHJlbkBpMnNlLmNvbT4KPj4gd3JvdGU6 Cj4+Pgo+Pj4gVGhlIGR3YzIgVVNCIGRyaXZlciB0cmllcyB0byBmaW5kIGEgZ2VuZXJpYyBQSFkg Zmlyc3QgYW5kIHRoZW4gbG9vawo+Pj4gZm9yIGFuIG9sZCBzdHlsZSBVU0IgUEhZLiBJbiBjYXNl IG9mIGEgdmFsaWQgZ2VuZXJpYyBQSFkgbm9kZSB3aXRob3V0Cj4+PiBhIFBIWSBkcml2ZXIsIHRo ZSBQSFkgbGF5ZXIgd2lsbCByZXR1cm4gLUVQUk9CRV9ERUZFUiBmb3JldmVyLiBTbyBkd2MyCj4+ PiB3aWxsIG5ldmVyIHRyaWVzIGZvciBhbiBVU0IgUEhZLgo+Pj4KPj4+IEZpeCB0aGlzIGlzc3Vl IGJ5IGZpbmRpbmcgYSBnZW5lcmljIFBIWSBhbmQgYW4gb2xkIHN0eWxlIFVTQiBQSFkKPj4+IGF0 IG9uY2UuCj4+Cj4+IFRoaXMgd291bGQgZml4IG9ubHkgb25lIG9mIHRoZSBVU0IgY29udHJvbGxl cnMgKGR3YzIpLCBidXQgbm90IHRoZSBvdGhlcnMKPj4gdGhhdCBhcmUgYWZmZWN0ZWQuIEFzIEkg d3JvdGUgaW4gbXkgc3VnZ2VzdGVkIHBhdGNoLCBkd2MzIGFwcGVhcnMgdG8gYmUKPj4gYWZmZWN0 ZWQgdGhlIHNhbWUgd2F5LCBhbmQgYWxsIG90aGVyIGhvc3QgZHJpdmVycyB0aGF0IGNhbGwgdXNi X2FkZF9oY2QoKQo+PiB3aXRob3V0IGZpcnN0IHNldHRpbmcgaGNkLT5waHkgd291bGQgc3VmZmVy IGZyb20gdGhpcyBhcyB3ZWxsLgo+Pgo+PiBJZiB3ZSBnbyBkb3duIHRoZSByb3V0ZSBvZiBhZGRy ZXNzaW5nIGl0IGhlcmUgaW4gdGhlIGhjZCBkcml2ZXJzLCB3ZQo+PiBzaG91bGQKPj4gYXQgbGVh c3QgY2hhbmdlIGFsbCB0aHJlZSBvZiB0aG9zZSwgYW5kIGhvcGUgdGhpcyBkb2Vzbid0IHJlZ3Jl c3MgaW4KPj4gYW5vdGhlciB3YXkuCj4+Cj4+ICAgICAgICAgQXJuZAo+Cj4KPiBpIGZ1bGx5IHVu dGVyc3RhbmQuIEJ1dCB3ZSBsZWF2aW5nIHRoZSBwYXRoIG9mICJmaXhpbmcgYSBjcml0aWNhbCBp c3N1ZSBvbgo+IEJDTTI4MzUiIGFuZCBnbyB0byAiZml4aW5nIG11bHRpcGxlIFVTQiBob3N0IGNv bnRyb2xsZXIiLiBJIGRvIHRoaXMgYWxsIGluCj4gbXkgc3BhcmUgdGltZSBhbmQgZG9uJ3QgaGF2 ZSBhbnkgb2YgdGhlIG90aGVyIFVTQiBjb250cm9sbGVyIGF2YWlsYWJsZS4gU28KPiBiZWZvcmUg aSBwcm9jZWVkIHdpdGggYW55IG90aGVyIHBhdGNoIGkgbGlrZSBzbyBzZWUgc29tZSBmZWVkYmFj ayBmcm9tIEpvaG4sCj4gR3JlZyBvciBGZWxpcGUuCj4KPiBBZnRlciBmaW5hbGl6aW5nIHRoaXMg cGF0Y2ggaSB0aGluayB0aGUgY2hhbmNlIGlzIGxpdHRsZSB0aGF0IHRoaXMgd291bGQgYmUKPiBh cHBsaWVkIHRvIDQuMTUuIFNvIGkgc2VlbXMgdG8gbWUgdGhhdCB3ZSBzdGlsbCByZXZlcnQgbXkg RFQgY2xlYW4gdXAgcGF0Y2guCgpDb3VsZCB5b3UgY29uZmlybSB0aGF0IHRoaXMgc2ltcGxlciBw YXRjaCBmaXhlcyB0aGUgcHJvYmxlbSBmb3IgIHlvdT8KTXkgZmVlbGluZyByaWdodCBub3cgaXMg dGhhdCB0aGlzIHdvdWxkIGJlIHRoZSBsZWFzdCBpbnZhc2l2ZSB2YXJpYW50LgpUaGlzIGlzIG9i dmlvdXNseSBhIGNyaXRpY2FsIHJlZ3Jlc3Npb24gZm9yIEJDTTI4MzUsIGJ1dCBJJ20gZmFpcmx5 IHN1cmUKaXQncyBqdXN0IGFzIGNyaXRpY2FsIGZvciBhIGxvdCBvZiBvdGhlciBTb0NzIHRoYXQg aGF2ZW4ndCBkb25lIGFzIG11Y2gKdGVzdGluZyBvbiBsaW51eC1uZXh0LgoKSGFucyBoYXMgYWxy ZWFkeSB2ZXJpZmllZCB0aGUgZWFybGllciAobW9yZSBjb21wbGV4KSB2ZXJzaW9uLCBidXQgbXkK YW5hbHlzaXMgdG9kYXkgaGFzIG1hZGUgaXQgdmVyeSBsaWtlbHkgdGhhdCB0aGlzIG9uZSBpcyBm dWxseSBzdWZmaWNpZW50CnRvIGZpeCBhbGwgYWZmZWN0ZWQgcGxhdGZvcm1zLgoKUmV2ZXJ0aW5n IGFsbCBuaW5lIHBhdGNoZXMgdGhhdCBhZGQgI3BoeS1jZWxscyB3b3VsZCBzdGlsbCBiZSBhbiBv cHRpb24sCmJ1dCBzZWVtcyB3YXkgbW9yZSBpbnZhc2l2ZSBhdCB0aGlzIHBvaW50LgoKICAgICAg IEFybmQKCiAgICAgICAgaWYgKElTX0VSUihwaHlfcHJvdmlkZXIpIHx8ICF0cnlfbW9kdWxlX2dl dChwaHlfcHJvdmlkZXItPm93bmVyKSkgewotLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxp c3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkgb2Yg YSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5m byBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9waHkvcGh5LWNvcmUuYyBiL2RyaXZlcnMvcGh5L3BoeS1jb3JlLmMKaW5k ZXggYjQ5NjRiMDY3YWVjLi45M2I1NWZiNzFkNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L3Bo eS1jb3JlLmMKKysrIGIvZHJpdmVycy9waHkvcGh5LWNvcmUuYwpAQCAtNDEwLDYgKzQxMCwxMCBA QCBzdGF0aWMgc3RydWN0IHBoeSAqX29mX3BoeV9nZXQoc3RydWN0IGRldmljZV9ub2RlCipucCwg aW50IGluZGV4KQogICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BU UigtRU5PREVWKTsKCisgICAgICAgLyogVGhpcyBwaHkgdHlwZSBoYW5kbGVkIGJ5IHRoZSB1c2It cGh5IHN1YnN5c3RlbSBmb3Igbm93ICovCisgICAgICAgaWYgKG9mX2RldmljZV9pc19jb21wYXRp YmxlKG5wLCAidXNiLW5vcC14Y2VpdiIpKQorICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIo LUVOT0RFVik7CisKICAgICAgICBtdXRleF9sb2NrKCZwaHlfcHJvdmlkZXJfbXV0ZXgpOwogICAg ICAgIHBoeV9wcm92aWRlciA9IG9mX3BoeV9wcm92aWRlcl9sb29rdXAoYXJncy5ucCk7Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: arnd@arndb.de (Arnd Bergmann) Date: Fri, 12 Jan 2018 00:32:57 +0100 Subject: [PATCH] usb: dwc2: Fix endless deferral probe In-Reply-To: <7ef21b99-67c8-b246-cc9a-b7202264a7a0@i2se.com> References: <1515526134-2148-1-git-send-email-stefan.wahren@i2se.com> <7ef21b99-67c8-b246-cc9a-b7202264a7a0@i2se.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Jan 10, 2018 at 1:15 PM, Stefan Wahren wrote: > Hi Arnd, > > > Am 09.01.2018 um 22:33 schrieb Arnd Bergmann: >> >> On Tue, Jan 9, 2018 at 8:28 PM, Stefan Wahren >> wrote: >>> >>> The dwc2 USB driver tries to find a generic PHY first and then look >>> for an old style USB PHY. In case of a valid generic PHY node without >>> a PHY driver, the PHY layer will return -EPROBE_DEFER forever. So dwc2 >>> will never tries for an USB PHY. >>> >>> Fix this issue by finding a generic PHY and an old style USB PHY >>> at once. >> >> This would fix only one of the USB controllers (dwc2), but not the others >> that are affected. As I wrote in my suggested patch, dwc3 appears to be >> affected the same way, and all other host drivers that call usb_add_hcd() >> without first setting hcd->phy would suffer from this as well. >> >> If we go down the route of addressing it here in the hcd drivers, we >> should >> at least change all three of those, and hope this doesn't regress in >> another way. >> >> Arnd > > > i fully unterstand. But we leaving the path of "fixing a critical issue on > BCM2835" and go to "fixing multiple USB host controller". I do this all in > my spare time and don't have any of the other USB controller available. So > before i proceed with any other patch i like so see some feedback from John, > Greg or Felipe. > > After finalizing this patch i think the chance is little that this would be > applied to 4.15. So i seems to me that we still revert my DT clean up patch. Could you confirm that this simpler patch fixes the problem for you? My feeling right now is that this would be the least invasive variant. This is obviously a critical regression for BCM2835, but I'm fairly sure it's just as critical for a lot of other SoCs that haven't done as much testing on linux-next. Hans has already verified the earlier (more complex) version, but my analysis today has made it very likely that this one is fully sufficient to fix all affected platforms. Reverting all nine patches that add #phy-cells would still be an option, but seems way more invasive at this point. Arnd diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c index b4964b067aec..93b55fb71d54 100644 --- a/drivers/phy/phy-core.c +++ b/drivers/phy/phy-core.c @@ -410,6 +410,10 @@ static struct phy *_of_phy_get(struct device_node *np, int index) if (ret) return ERR_PTR(-ENODEV); + /* This phy type handled by the usb-phy subsystem for now */ + if (of_device_is_compatible(np, "usb-nop-xceiv")) + return ERR_PTR(-ENODEV); + mutex_lock(&phy_provider_mutex); phy_provider = of_phy_provider_lookup(args.np); if (IS_ERR(phy_provider) || !try_module_get(phy_provider->owner)) {