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: [RFT,2/2] xhci: handle port status events for removed USB3 hcd From: Jack Pham Message-Id: <20180928181033.GC17520@jackp-linux.qualcomm.com> Date: Fri, 28 Sep 2018 11:10:33 -0700 To: Mathias Nyman Cc: Peter Chen , dl-linux-imx , "linux-usb@vger.kernel.org" , Jun Li , "joel@jms.id.au" , "mrana@codeaurora.org" , "stable@vger.kernel.org" List-ID: SGkgTWF0aGlhcywKCk9uIEZyaSwgU2VwIDI4LCAyMDE4IGF0IDAzOjM1OjEwQU0gKzAwMDAsIFBl dGVyIENoZW4gd3JvdGU6Cj4gIAo+ID4gPiBDYzogPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+Cj4g PiA+IFJlcG9ydGVkLWJ5OiBQZXRlciBDaGVuIDxwZXRlci5jaGVuQG54cC5jb20+Cj4gPiA+IFNp Z25lZC1vZmYtYnk6IE1hdGhpYXMgTnltYW4gPG1hdGhpYXMubnltYW5AbGludXguaW50ZWwuY29t Pgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jIHwgNyArKysr KysrCj4gPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQo+ID4gPgo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC94aGNpLXJpbmcuYwo+ID4gPiBiL2RyaXZlcnMv dXNiL2hvc3QveGhjaS1yaW5nLmMgaW5kZXggZjBhOTlhYS4uM2QzMTRiOCAxMDA2NDQKPiA+ID4g LS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLXJpbmcuYwo+ID4gPiArKysgYi9kcml2ZXJzL3Vz Yi9ob3N0L3hoY2ktcmluZy5jCj4gPiA+IEBAIC0xNTUyLDYgKzE1NTIsMTMgQEAgc3RhdGljIHZv aWQgaGFuZGxlX3BvcnRfc3RhdHVzKHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwKPiA+ID4gICAJCWdv dG8gY2xlYW51cDsKPiA+ID4gICAJfQo+ID4gPgo+ID4gPiArCS8qIFdlIG1pZ2h0IGdldCBpbnRl cnJ1cHRzIGFmdGVyIHNoYXJlZF9oY2QgaXMgcmVtb3ZlZCAqLwo+ID4gPiArCWlmIChwb3J0LT5y aHViID09ICZ4aGNpLT51c2IzX3JodWIgJiYgeGhjaS0+c2hhcmVkX2hjZCA9PSBOVUxMKSB7Cj4g PiA+ICsJCXhoY2lfZGJnKHhoY2ksICJpZ25vcmUgcG9ydCBldmVudCBmb3IgcmVtb3ZlZCBVU0Iz IGhjZFxuIik7Cj4gPiA+ICsJCWJvZ3VzX3BvcnRfc3RhdHVzID0gdHJ1ZTsKPiA+ID4gKwkJZ290 byBjbGVhbnVwOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAgIAloY2QgPSBwb3J0LT5yaHViLT5o Y2Q7Cj4gPiA+ICAgCWJ1c19zdGF0ZSA9ICZ4aGNpLT5idXNfc3RhdGVbaGNkX2luZGV4KGhjZCld Owo+ID4gPiAgIAloY2RfcG9ydG51bSA9IHBvcnQtPmhjZF9wb3J0bnVtOwo+ID4gPgo+ID4gCj4g PiBUaGlzIHByb2JhYmx5IG9ubHkgYXBwbGllcyBmcm9tIDQuMTggb253YXJkcywgdG8gdGVzdCBv biBvbGRlciBrZXJuZWwgdHJ5IHNvbWV0aGluZwo+ID4gbGlrZSB0aGlzIGluc3RlYWQ6Cj4gPiAK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jIGIvZHJpdmVycy91 c2IvaG9zdC94aGNpLXJpbmcuYyBpbmRleAo+ID4gNjk5NjIzNS4uNzkyNWRhOSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMKPiA+ICsrKyBiL2RyaXZlcnMvdXNi L2hvc3QveGhjaS1yaW5nLmMKPiA+IEBAIC0xNjA2LDcgKzE2MDYsMTEgQEAgc3RhdGljIHZvaWQg aGFuZGxlX3BvcnRfc3RhdHVzKHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwKPiA+ICAgICAgICAgIGhj ZCA9IHhoY2lfdG9faGNkKHhoY2kpOwo+ID4gICAgICAgICAgaWYgKChtYWpvcl9yZXZpc2lvbiA9 PSAweDAzKSAhPSAoaGNkLT5zcGVlZCA+PSBIQ0RfVVNCMykpCj4gPiAgICAgICAgICAgICAgICAg IGhjZCA9IHhoY2ktPnNoYXJlZF9oY2Q7Cj4gPiAtCj4gPiArICAgICAgIGlmICghaGNkKSB7CgpG b3IgdGVzdGluZyBvbiA0LjE0IEkgYWxzbyBhZGRlZCB0aGUgZGVidWcgcHJpbnQgImlnbm9yZSBw b3J0IGV2ZW50IgpoZXJlIGFzIHdlbGwuIE1heWJlIGl0IHNob3VsZCBiZSB0aGVyZSBpbiB0aGUg ZmluYWwgLXN0YWJsZSBwYXRjaCBhcwp3ZWxsLgoKPiA+ICsgICAgICAgICAgICAgICBib2d1c19w b3J0X3N0YXR1cyA9IHRydWU7Cj4gPiArICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwo+ID4g KyAgICAgICB9Cj4gPiAgICAgICAgICBpZiAobWFqb3JfcmV2aXNpb24gPT0gMCkgewo+ID4gICAg ICAgICAgICAgICAgICB4aGNpX3dhcm4oeGhjaSwgIkV2ZW50IGZvciBwb3J0ICV1IG5vdCBpbiAi Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXh0ZW5kZWQgQ2FwYWJpbGl0 aWVzLCBpZ25vcmluZy5cbiIsCj4gPiAKPiA+IAo+ID4gSmFjaywgUGV0ZXIsIGRvIHRoZXNlIHBh dGNoZXMgc29sdmUgdGhlIHJlbW92ZSBpc3N1ZXMgeW91IGFyZSBzZWVpbmc/Cj4gCj4gQXQgbXkg dHdvIFVTQjMgcGxhdGZvcm1zLCBvbmx5IGFwcGx5IHRoZSAxc3QgcGF0Y2ggY2FuIGZpeCBteSBw cm9ibGVtLiAgTWF5YmUKPiBteSBVU0IzIHBvcnQgY2hhbmdlIGludGVycnVwdCBvY2N1cnMgYWx3 YXlzIGJlZm9yZSByZW1vdmluZyBVU0IyIEhDRC4KPiAKPiBQZXRlcgoKRGl0dG8uIEkgdGhpbmsg dGhlIHhoY2lfaXJxKCkgaXMgZ2V0dGluZyB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGR1cmluZwp1 c2JfcmVtb3ZlX2hjZCgpICh1c2JfZGlzY29ubmVjdCBvbiB0aGUgcm9vdCBodWI/KSBidXQgaXMg YWJsZSB0bwpjb21wbGV0ZSBiZWZvcmUgaXQgcmV0dXJucy4gVGhhdCBpcywgdGhlIE5VTEwgcG9p bnRlciBkZXJlZmVyZW5jZSBpcwpyZXNvbHZlZCB5ZXQgSSBkb24ndCBzZWUgdGhhdCAiaWdub3Jl IHBvcnQgZXZlbnQgZm9yIHJlbW92ZWQgVVNCMyBoY2QiCm1lc3NhZ2UgYXQgYWxsLgoKUmVnYXJk bGVzcywgaXQncyBnb29kIHRvIGhhdmUgaGVyZSBqdXN0IGluIGNhc2UsIHNvClRlc3RlZC1ieTog SmFjayBQaGFtIDxqYWNrcEBjb2RlYXVyb3JhLm9yZz4KCldpbGwgeW91IGJlIHNlbmRpbmcgdGhp cyBhcyBzZXBhcmF0ZSBwYXRjaGVzIGZvciAtcmMgdnMgLXN0YWJsZT8KClRoYW5rcywKSmFjawo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.codeaurora.org ([198.145.29.96]:57320 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726130AbeI2Afd (ORCPT ); Fri, 28 Sep 2018 20:35:33 -0400 Date: Fri, 28 Sep 2018 11:10:33 -0700 From: Jack Pham To: Mathias Nyman Cc: Peter Chen , dl-linux-imx , "linux-usb@vger.kernel.org" , Jun Li , "joel@jms.id.au" , "mrana@codeaurora.org" , "stable@vger.kernel.org" Subject: Re: [RFT PATCH 2/2] xhci: handle port status events for removed USB3 hcd Message-ID: <20180928181033.GC17520@jackp-linux.qualcomm.com> References: <20180927013948.GB17520@jackp-linux.qualcomm.com> <1538065587-22997-1-git-send-email-mathias.nyman@linux.intel.com> <1538065587-22997-2-git-send-email-mathias.nyman@linux.intel.com> <43b03dcc-6cae-07b1-402e-f17b63e2f564@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: stable-owner@vger.kernel.org List-ID: Hi Mathias, On Fri, Sep 28, 2018 at 03:35:10AM +0000, Peter Chen wrote: > > > > Cc: > > > Reported-by: Peter Chen > > > Signed-off-by: Mathias Nyman > > > --- > > > drivers/usb/host/xhci-ring.c | 7 +++++++ > > > 1 file changed, 7 insertions(+) > > > > > > diff --git a/drivers/usb/host/xhci-ring.c > > > b/drivers/usb/host/xhci-ring.c index f0a99aa..3d314b8 100644 > > > --- a/drivers/usb/host/xhci-ring.c > > > +++ b/drivers/usb/host/xhci-ring.c > > > @@ -1552,6 +1552,13 @@ static void handle_port_status(struct xhci_hcd *xhci, > > > goto cleanup; > > > } > > > > > > + /* We might get interrupts after shared_hcd is removed */ > > > + if (port->rhub == &xhci->usb3_rhub && xhci->shared_hcd == NULL) { > > > + xhci_dbg(xhci, "ignore port event for removed USB3 hcd\n"); > > > + bogus_port_status = true; > > > + goto cleanup; > > > + } > > > + > > > hcd = port->rhub->hcd; > > > bus_state = &xhci->bus_state[hcd_index(hcd)]; > > > hcd_portnum = port->hcd_portnum; > > > > > > > This probably only applies from 4.18 onwards, to test on older kernel try something > > like this instead: > > > > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index > > 6996235..7925da9 100644 > > --- a/drivers/usb/host/xhci-ring.c > > +++ b/drivers/usb/host/xhci-ring.c > > @@ -1606,7 +1606,11 @@ static void handle_port_status(struct xhci_hcd *xhci, > > hcd = xhci_to_hcd(xhci); > > if ((major_revision == 0x03) != (hcd->speed >= HCD_USB3)) > > hcd = xhci->shared_hcd; > > - > > + if (!hcd) { For testing on 4.14 I also added the debug print "ignore port event" here as well. Maybe it should be there in the final -stable patch as well. > > + bogus_port_status = true; > > + goto cleanup; > > + } > > if (major_revision == 0) { > > xhci_warn(xhci, "Event for port %u not in " > > "Extended Capabilities, ignoring.\n", > > > > > > Jack, Peter, do these patches solve the remove issues you are seeing? > > At my two USB3 platforms, only apply the 1st patch can fix my problem. Maybe > my USB3 port change interrupt occurs always before removing USB2 HCD. > > Peter Ditto. I think the xhci_irq() is getting triggered by something during usb_remove_hcd() (usb_disconnect on the root hub?) but is able to complete before it returns. That is, the NULL pointer dereference is resolved yet I don't see that "ignore port event for removed USB3 hcd" message at all. Regardless, it's good to have here just in case, so Tested-by: Jack Pham Will you be sending this as separate patches for -rc vs -stable? Thanks, Jack -- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project