From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-734329-1521268412-2-8014523270207314099 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no ("Email failed DMARC policy for domain") X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org', XOriginatingCountry='UNK' X-Spam-charsets: plain='us-ascii' X-IgnoreVacation: yes ("Email failed DMARC policy for domain") X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1521268411; b=I5taY+d3ywSxrB0Z25PA0GQJC6IJAWWEGjCn2iegFGwHfls MBDau1bSDL5Nb4HHqa5Y1qfadbvsLlk5lyW10VE2NBcx2llAhc4atykQjPujOarS 2Y9/YFfD1W5z+DcZd1IrS9HgpWTPwXYcmBiXa/h38Ae/iH1ptDV1vnlR0MCPIP1y uVSD3IqIpymX/7xaMx2Fuu++/tYWgTnAzXptVZEe7Xbp0+52dy7D238v5RFriS1I Gq+Orkw7Gb3bPVCd4//1klARHifxD+6/8ZHSlE6XeX3WcJtPc2vNvtZL74adcBYS MryVenPTXixYODQ0KP4hhy7eloYpi8eFIe7MQIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :references:content-type:content-transfer-encoding:mime-version :sender:list-id; s=arctest; t=1521268411; bh=MOni3lgSX4jIHjq4cUl TrMDYJ1gthnhlwS7G0fqILhw=; b=qN4fjsWu1Qo+uvzKo+JjY/Y9d/jriRveg0p hhoB02dTF0yd52dFOYBu1wX7lG6CqRsFjWsOYfoeajO8YCKT9J9pEFcbJ3yrpnII R6+sew79uiLO8l9OZ6u6zuO/DIIaR87C9etPXBqfKoYQuckGEXvkLos9D4HK0s/V BNNO6WfHMQ0TeWWSPtFBYD+V8z+s3bGOFZSkTKQCbofpvm1LheU8OCry5NzRWQr5 nP5lCxNQIDUTeCBpLi/WKH2REXQZDGo62ucKDZebrINJUCafn5vyvlEEM7fjBmo/ bdvBShfphXOxR1PSNTX8uOzvf67RlMR/2rwpk/gzfLF8/5DGBqQ== ARC-Authentication-Results: i=1; mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=synopsys.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=synopsys.com header.result=pass header_is_org_domain=yes Authentication-Results: mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=synopsys.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=synopsys.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751304AbeCQGdR convert rfc822-to-8bit (ORCPT ); Sat, 17 Mar 2018 02:33:17 -0400 Received: from smtprelay2.synopsys.com ([198.182.60.111]:48731 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750982AbeCQGdQ (ORCPT ); Sat, 17 Mar 2018 02:33:16 -0400 From: Minas Harutyunyan To: Felipe Balbi , Minas Harutyunyan , Roger Quadros CC: "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v2] usb: dwc3: Prevent indefinite sleep in _dwc3_set_mode during suspend/resume Thread-Topic: [PATCH v2] usb: dwc3: Prevent indefinite sleep in _dwc3_set_mode during suspend/resume Thread-Index: AQHTt7VttcDOmDIowUqzUI1Hi/JpmA== Date: Sat, 17 Mar 2018 06:33:12 +0000 Message-ID: <410670D7E743164D87FA6160E7907A560113ABBA4B@am04wembxa.internal.synopsys.com> References: <1519730526-22274-1-git-send-email-rogerq@ti.com> <69517684-bd39-e945-0c9e-ccd52b8050d5@ti.com> <87y3isffog.fsf@linux.intel.com> <5ea0ad17-d538-72ec-ed59-004242c4cd26@ti.com> <410670D7E743164D87FA6160E7907A560113ABB478@am04wembxa.internal.synopsys.com> <87zi38438h.fsf@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.116.70.62] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Hi, On 3/16/2018 4:25 PM, Felipe Balbi wrote: > > Hi, > > Minas Harutyunyan writes: >>>>> On 09/03/18 14:47, Roger Quadros wrote: >>>>>> In the following test we get stuck by sleeping forever in _dwc3_set_mode() >>>>>> after which dual-role switching doesn't work. >>>>>> >>>>>> On dra7-evm's dual-role port, >>>>>> - Load g_zero gadget driver and enumerate to host >>>>>> - suspend to mem >>>>>> - disconnect USB cable to host and connect otg cable with Pen drive in it. >>>>>> - resume system >>>>>> - we sleep indefinitely in _dwc3_set_mode due to. >>>>>> dwc3_gadget_exit()->usb_del_gadget_udc()->udc_stop()-> >>>>>> dwc3_gadget_stop()->wait_event_lock_irq() >>>>>> >>>>>> To fix this instead of waiting indefinitely with wait_event_lock_irq() >>>>>> we use wait_event_interruptible_lock_irq_timeout() and print >>>>>> and error message if there was a timeout. >>>>>> >>>>>> Signed-off-by: Roger Quadros >>>>> >>>>> Thanks for picking this for -next. >>>>> Is it better to have this in v4.16-rc fixes? >>>>> and also stable? v4.12+ >>>> >>>> Well, there was no "Fixes: foobar" or "Cc: stable" lines in the commit >>>> log ;-) >>>> >>>> The best we can do now, is wait for -rc1 and manually send the commit to >>>> stable. >>>> >>> >>> That's fine. Thanks. >>> >> >> Same issue seen in dwc3_gadget_ep_dequeue() function where also used >> wait_event_lock_irq() - as result infinite loop. > > how did this happen? During rmmod dwc3? Or, perhaps, after you unloaded > a gadget driver? > No, not during rmmod's. We using our internal USB testing tool. Test case; ISOC OUT, transfer size N frames. When host starts ISOC OUT traffic then the dwc3 based on "Transfer not ready" event in frame F starts transfers staring from frame F+4 (for bInterval=1) as result 4 requests, which already queued on device side, remain incomplete. Function driver on some timeout trying dequeue these 4 requests (without disabling EP) to complete test. For IN ISOC's these requests completed on MISSED ISOC event, but for ISOC OUT required call dequeue on some timeout. >> Actually to fix this issue I updated condition of wait function >> from: >> !(dep->flags & DWC3_EP_END_TRANSFER_PENDING) >> to: >> !(dep->flags & DWC3_EP_END_TRANSFER_PENDING & DWC3_EP_ENABLED) > > you're not fixing anything. You're, essentially, removing the entire > end transfer pending logic. yes, you are right, but how to overcome this infinite loop? Replace wait_event_lock_irq() by wait_event_interruptible_lock_irq_timeout()? The whole idea of this is that we can > disable the endpoint and wait for the End Transfer interrupt. When you > add a check for the endpoint being enabled, then that code will never > run and, thus, never wait for the End Transfer IRQ. > > If you manage to find a more reliable way of reproducing this, then make > sure to capture dwc3 tracepoints (see the documentation for details) and > let's start trying to figure out what's going on. > > cheers > 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: [v2] usb: dwc3: Prevent indefinite sleep in _dwc3_set_mode during suspend/resume From: Minas Harutyunyan Message-Id: <410670D7E743164D87FA6160E7907A560113ABBA4B@am04wembxa.internal.synopsys.com> Date: Sat, 17 Mar 2018 06:33:12 +0000 To: Felipe Balbi , Minas Harutyunyan , Roger Quadros Cc: "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" List-ID: SGksCgpPbiAzLzE2LzIwMTggNDoyNSBQTSwgRmVsaXBlIEJhbGJpIHdyb3RlOgo+IAo+IEhpLAo+ IAo+IE1pbmFzIEhhcnV0eXVueWFuIDxNaW5hcy5IYXJ1dHl1bnlhbkBzeW5vcHN5cy5jb20+IHdy aXRlczoKPj4+Pj4gT24gMDkvMDMvMTggMTQ6NDcsIFJvZ2VyIFF1YWRyb3Mgd3JvdGU6Cj4+Pj4+ PiBJbiB0aGUgZm9sbG93aW5nIHRlc3Qgd2UgZ2V0IHN0dWNrIGJ5IHNsZWVwaW5nIGZvcmV2ZXIg aW4gX2R3YzNfc2V0X21vZGUoKQo+Pj4+Pj4gYWZ0ZXIgd2hpY2ggZHVhbC1yb2xlIHN3aXRjaGlu ZyBkb2Vzbid0IHdvcmsuCj4+Pj4+Pgo+Pj4+Pj4gT24gZHJhNy1ldm0ncyBkdWFsLXJvbGUgcG9y dCwKPj4+Pj4+IC0gTG9hZCBnX3plcm8gZ2FkZ2V0IGRyaXZlciBhbmQgZW51bWVyYXRlIHRvIGhv c3QKPj4+Pj4+IC0gc3VzcGVuZCB0byBtZW0KPj4+Pj4+IC0gZGlzY29ubmVjdCBVU0IgY2FibGUg dG8gaG9zdCBhbmQgY29ubmVjdCBvdGcgY2FibGUgd2l0aCBQZW4gZHJpdmUgaW4gaXQuCj4+Pj4+ PiAtIHJlc3VtZSBzeXN0ZW0KPj4+Pj4+IC0gd2Ugc2xlZXAgaW5kZWZpbml0ZWx5IGluIF9kd2Mz X3NldF9tb2RlIGR1ZSB0by4KPj4+Pj4+ICAgICBkd2MzX2dhZGdldF9leGl0KCktPnVzYl9kZWxf Z2FkZ2V0X3VkYygpLT51ZGNfc3RvcCgpLT4KPj4+Pj4+IAlkd2MzX2dhZGdldF9zdG9wKCktPndh aXRfZXZlbnRfbG9ja19pcnEoKQo+Pj4+Pj4KPj4+Pj4+IFRvIGZpeCB0aGlzIGluc3RlYWQgb2Yg d2FpdGluZyBpbmRlZmluaXRlbHkgd2l0aCB3YWl0X2V2ZW50X2xvY2tfaXJxKCkKPj4+Pj4+IHdl IHVzZSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfbG9ja19pcnFfdGltZW91dCgpIGFuZCBwcmlu dAo+Pj4+Pj4gYW5kIGVycm9yIG1lc3NhZ2UgaWYgdGhlcmUgd2FzIGEgdGltZW91dC4KPj4+Pj4+ Cj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBSb2dlciBRdWFkcm9zIDxyb2dlcnFAdGkuY29tPgo+Pj4+ Pgo+Pj4+PiBUaGFua3MgZm9yIHBpY2tpbmcgdGhpcyBmb3IgLW5leHQuCj4+Pj4+IElzIGl0IGJl dHRlciB0byBoYXZlIHRoaXMgaW4gdjQuMTYtcmMgZml4ZXM/Cj4+Pj4+IGFuZCBhbHNvIHN0YWJs ZT8gdjQuMTIrCj4+Pj4KPj4+PiBXZWxsLCB0aGVyZSB3YXMgbm8gIkZpeGVzOiBmb29iYXIiIG9y ICJDYzogc3RhYmxlIiBsaW5lcyBpbiB0aGUgY29tbWl0Cj4+Pj4gbG9nIDstKQo+Pj4+Cj4+Pj4g VGhlIGJlc3Qgd2UgY2FuIGRvIG5vdywgaXMgd2FpdCBmb3IgLXJjMSBhbmQgbWFudWFsbHkgc2Vu ZCB0aGUgY29tbWl0IHRvCj4+Pj4gc3RhYmxlLgo+Pj4+Cj4+Pgo+Pj4gVGhhdCdzIGZpbmUuIFRo YW5rcy4KPj4+Cj4+Cj4+IFNhbWUgaXNzdWUgc2VlbiBpbiBkd2MzX2dhZGdldF9lcF9kZXF1ZXVl KCkgZnVuY3Rpb24gd2hlcmUgYWxzbyB1c2VkCj4+IHdhaXRfZXZlbnRfbG9ja19pcnEoKSAtIGFz IHJlc3VsdCBpbmZpbml0ZSBsb29wLgo+IAo+IGhvdyBkaWQgdGhpcyBoYXBwZW4/IER1cmluZyBy bW1vZCBkd2MzPyBPciwgcGVyaGFwcywgYWZ0ZXIgeW91IHVubG9hZGVkCj4gYSBnYWRnZXQgZHJp dmVyPwo+IApObywgbm90IGR1cmluZyBybW1vZCdzLgpXZSB1c2luZyBvdXIgaW50ZXJuYWwgVVNC IHRlc3RpbmcgdG9vbC4gVGVzdCBjYXNlOyBJU09DIE9VVCwgdHJhbnNmZXIgCnNpemUgTiBmcmFt ZXMuIFdoZW4gaG9zdCBzdGFydHMgSVNPQyBPVVQgdHJhZmZpYyB0aGVuIHRoZSBkd2MzIGJhc2Vk IG9uIAoiVHJhbnNmZXIgbm90IHJlYWR5IiBldmVudCBpbiBmcmFtZSBGIHN0YXJ0cyB0cmFuc2Zl cnMgc3RhcmluZyBmcm9tIApmcmFtZSBGKzQgKGZvciBiSW50ZXJ2YWw9MSkgYXMgcmVzdWx0IDQg cmVxdWVzdHMsIHdoaWNoIGFscmVhZHkgcXVldWVkIApvbiBkZXZpY2Ugc2lkZSwgcmVtYWluIGlu Y29tcGxldGUuIEZ1bmN0aW9uIGRyaXZlciBvbiBzb21lIHRpbWVvdXQgCnRyeWluZyBkZXF1ZXVl IHRoZXNlIDQgcmVxdWVzdHMgKHdpdGhvdXQgZGlzYWJsaW5nIEVQKSB0byBjb21wbGV0ZSB0ZXN0 LgpGb3IgSU4gSVNPQydzIHRoZXNlIHJlcXVlc3RzIGNvbXBsZXRlZCBvbiBNSVNTRUQgSVNPQyBl dmVudCwgYnV0IGZvciAKSVNPQyBPVVQgcmVxdWlyZWQgY2FsbCBkZXF1ZXVlIG9uIHNvbWUgdGlt ZW91dC4KCj4+IEFjdHVhbGx5IHRvIGZpeCB0aGlzIGlzc3VlIEkgdXBkYXRlZCBjb25kaXRpb24g b2Ygd2FpdCBmdW5jdGlvbgo+PiBmcm9tOgo+PiAhKGRlcC0+ZmxhZ3MgJiBEV0MzX0VQX0VORF9U UkFOU0ZFUl9QRU5ESU5HKQo+PiB0bzoKPj4gIShkZXAtPmZsYWdzICYgRFdDM19FUF9FTkRfVFJB TlNGRVJfUEVORElORyAmIERXQzNfRVBfRU5BQkxFRCkKPiAKPiB5b3UncmUgbm90IGZpeGluZyBh bnl0aGluZy4gWW91J3JlLCBlc3NlbnRpYWxseSwgcmVtb3ZpbmcgdGhlIGVudGlyZQo+IGVuZCB0 cmFuc2ZlciBwZW5kaW5nIGxvZ2ljLiAKeWVzLCB5b3UgYXJlIHJpZ2h0LCBidXQgaG93IHRvIG92 ZXJjb21lIHRoaXMgaW5maW5pdGUgbG9vcD8gUmVwbGFjZSAKd2FpdF9ldmVudF9sb2NrX2lycSgp IGJ5ICB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfbG9ja19pcnFfdGltZW91dCgpPwoKVGhlIHdo b2xlIGlkZWEgb2YgdGhpcyBpcyB0aGF0IHdlIGNhbgo+IGRpc2FibGUgdGhlIGVuZHBvaW50IGFu ZCB3YWl0IGZvciB0aGUgRW5kIFRyYW5zZmVyIGludGVycnVwdC4gV2hlbiB5b3UKPiBhZGQgYSBj aGVjayBmb3IgdGhlIGVuZHBvaW50IGJlaW5nIGVuYWJsZWQsIHRoZW4gdGhhdCBjb2RlIHdpbGwg bmV2ZXIKPiBydW4gYW5kLCB0aHVzLCBuZXZlciB3YWl0IGZvciB0aGUgRW5kIFRyYW5zZmVyIElS US4KPiAKPiBJZiB5b3UgbWFuYWdlIHRvIGZpbmQgYSBtb3JlIHJlbGlhYmxlIHdheSBvZiByZXBy b2R1Y2luZyB0aGlzLCB0aGVuIG1ha2UKPiBzdXJlIHRvIGNhcHR1cmUgZHdjMyB0cmFjZXBvaW50 cyAoc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzKSBhbmQKPiBsZXQncyBzdGFydCB0 cnlpbmcgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uCj4gCj4gY2hlZXJzCj4KLS0tClRv IHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBs aW51eC11c2IiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJu ZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFq b3Jkb21vLWluZm8uaHRtbAo=