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: [V6,01/10] usb: gadget: udc: Add timer for stream capable endpoints From: Felipe Balbi Message-Id: <87h8g0yrl7.fsf@linux.intel.com> Date: Thu, 29 Nov 2018 14:51:32 +0200 To: Anurag Kumar Vulisha , Greg Kroah-Hartman , Alan Stern , Johan Hovold , Jaejoong Kim , Benjamin Herrenschmidt , Roger Quadros Cc: "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "v.anuragkumar@gmail.com" , Thinh Nguyen , Tejas Joglekar , Ajay Yugalkishore Pandey List-ID: SGksCgpBbnVyYWcgS3VtYXIgVnVsaXNoYSA8YW51cmFna3VAeGlsaW54LmNvbT4gd3JpdGVzOgo+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY29yZS5jIGIvZHJpdmVycy91 c2IvZ2FkZ2V0L3VkYy9jb3JlLmMKPj4+IGluZGV4IGFmODhiNDguLjQxY2MyM2IgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NvcmUuYwo+Pj4gKysrIGIvZHJpdmVycy91 c2IvZ2FkZ2V0L3VkYy9jb3JlLmMKPj4+IEBAIC01Miw2ICs1MiwyNCBAQCBzdGF0aWMgaW50IHVk Y19iaW5kX3RvX2RyaXZlcihzdHJ1Y3QgdXNiX3VkYyAqdWRjLAo+Pj4gIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KPj4+Cj4+PiAgLyoqCj4+PiArICogdXNiX2VwX3N0cmVhbV90aW1lb3V0IC0gY2Fs bGJhY2sgZnVuY3Rpb24gZm9yIGVuZHBvaW50IHN0cmVhbSB0aW1lb3V0IHRpbWVyCj4+PiArICog QGFyZzogcG9pbnRlciB0byBzdHJ1Y3QgdGltZXJfbGlzdAo+Pj4gKyAqCj4+PiArICogVGhpcyBm dW5jdGlvbiBnZXRzIGNhbGxlZCBvbmx5IHdoZW4gYnVsayBzdHJlYW1zIGFyZSBlbmFibGVkIGlu IHRoZSBlbmRwb2ludAo+Pj4gKyAqIGFuZCBvbmx5IGFmdGVyIGVwLT5zdHJlYW1fdGltZW91dF90 aW1lciBoYXMgZXhwaXJlZC4gVGhlIHRpbWVyIGdldHMgZXhwaXJlZAo+Pj4gKyAqIG9ubHkgd2hl biB0aGUgZ2FkZ2V0IGNvbnRyb2xsZXIgZmFpbGVkIHRvIGZpbmQgYSB2YWxpZCBzdHJlYW0gZXZl bnQgZm9yIHRoaXMKPj4+ICsgKiBlbmRwb2ludC4gT24gdGltZXIgZXhwaXJ5LCB0aGlzIGZ1bmN0 aW9uIGNhbGxzIHRoZSBlbmRwb2ludC1zcGVjaWZpYyB0aW1lb3V0Cj4+PiArICogaGFuZGxlciBy ZWdpc3RlcmVkIHRvIGVuZHBvaW50IG9wcy0+c3RyZWFtX3RpbWVvdXQgQVBJLgo+Pj4gKyAqLwo+ Pj4gK3N0YXRpYyB2b2lkIHVzYl9lcF9zdHJlYW1fdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAq YXJnKQo+Pj4gK3sKPj4+ICsJc3RydWN0IHVzYl9lcCAqZXAgPSBmcm9tX3RpbWVyKGVwLCBhcmcs IHN0cmVhbV90aW1lb3V0X3RpbWVyKTsKPj4+ICsKPj4+ICsJaWYgKGVwLT5zdHJlYW1fY2FwYWJs ZSAmJiBlcC0+b3BzLT5zdHJlYW1fdGltZW91dCkKPj4KPj53aHkgaXMgdGhlIHRpbWVyIG9ubHkg Zm9yIHN0cmVhbSBlbmRwb2ludHM/IFdoYXQgaWYgd2Ugd2FudCB0byBydW4gdGhpcwo+Pm9uIG5v bi1zdHJlYW0gY2FwYWJsZSBlcHM/Cj4+Cj4KPiBJIGhhdmUgc2VlbiB0aGlzIGlzc3VlIG9ubHkg d2l0aCBzdHJlYW0gY2FwYWJsZSBlcHMgYmV0d2VlbiBQUklNRSAmCj4gRVBSRFkuIEJ1dCB0aGlz IGlzc3VlIGNhbiBwb3RlbnRpYWxseSBvY2N1ciB3aXRoIG5vbi1zdHJlYW0gZW5kcG9pbnRzCj4g YWxzby4gV2lsbCByZW1vdmUgdGhpcyBzdHJlYW0gY2FwYWJsZSBjaGVja3MgaW4gbmV4dCBzZXJp ZXMgb2YgcGF0Y2guCgp5b3UncmUgYWRkaW5nIHN1cHBvcnQgZm9yIHRyYW5zZmVyIHRpbWVvdXRz LCB3aGljaCBzb21lIGdhZGdldHMgbWF5IHdhbnQKcmVnYXJkbGVzcyBvZiBlbmRwb2ludCB0eXBl LiBPbmUgdXNlIGlzIHRvIGNvcnJlY3QgY2FzZXMgb2Ygc3RyZWFtcwpnb2luZyBvdXQgb2Ygc3lu Yy4KCj4+PiArCQllcC0+b3BzLT5zdHJlYW1fdGltZW91dChlcCk7Cj4+Cj4+eW91IGRvbid0IG5l ZCBhbiBleHRyYSBvcGVyYXRpb24gaGVyZSwgZXBfZGVxdWV1ZSBzaG91bGQgYmUgZW5vdWdoLgo+ Pgo+Cj4gSSB0aGluayBpc3N1aW5nIGVwX2RlcXVldWUoKSB3b3VsZCBiZSBtb3JlIHRyaWNraWVy IHRoYW4gY2FsbGluZyBlcC0+b3BzLT5zdHJlYW1fdGltZW91dCgpLgo+IFRoaXMgaXMgYmVjYXVz ZSwgZXZlcnkgZ2FkZ2V0IGRyaXZlciBoYXMgdGhlaXIgb3duIHdheSBvZiBoYW5kbGluZyBlcF9k ZXF1ZXVlLiBTb21lCj4gZHJpdmVycyAobGlrZSBkd2MzKSBtYXkgc2xlZXAgZm9yIGFuIGV2ZW50 ICh3YWl0X2V2ZW50X2xvY2tfaXJxKSBpbiB0aGUgZXBfZGVxdWV1ZSByb3V0aW5lLgoKbm90IGFu eW1vcmUuIFRoZXJlJ3MsIG5vdywgYSByZXF1aXJlbWVudCB0aGF0IC0+ZGVxdWV1ZSBjYW4gYmUg Y2FsbGVkCmZyb20gYW55IGNvbnRleHQuCgo+IFNpbmNlIHdlIGFyZSBjYWxsaW5nIGVwX2RlcXVl dWUgZnJvbSB0aW1lciB0aW1lb3V0IGNhbGxiYWNrIHdoaWNoIGlzIGluIHNvZnRpcnEgY29udGV4 dCwKPiBzbGVlcGluZyBvciB3YWl0aW5nIGZvciBhbiBldmVudCB3b3VsZCBoYW5nIHRoZSBzeXN0 ZW0uIEFsc28gYWRkaW5nIGVwLT5vcHMtPnN0cmVhbV90aW1lb3V0KCkKPiB3b3VsZCBtYWtlIHRo ZSBnYWRnZXQgZHJpdmVycyBoYW5kbGUgdGhlIGlzc3VlIGluIGJldHRlciB3YXkgYmFzZWQgb24g dGhlaXIgaW1wbGVtZW50YXRpb24uCgpubyBwcm9ibGVtcwoKPiBBbm90aGVyIGFkdmFudGFnZSBp cyB0aGUgZHJpdmVycyB3aGljaCBkb2Vzbid0IGhhdmUgdGhpcyB0aW1lb3V0IGlzc3VlIGRvZXNu J3QgaGF2ZSB0byByZWdpc3RlciB0aGUKPiB0aW1lb3V0IGhhbmRsZXIgYW5kIGNhbiBhdm9pZCB0 aGUgbG9naWMgb2YgZGVsZXRpbmcgdGhlIHRpbWVyIGZvciBldmVyeSByZXF1ZXN0LiBTbywgSSB0 aGluawo+IGVwLT5vcHMtPnN0cmVhbV90aW1lb3V0KCkgd291bGQgYmUgYmV0dGVyIHRoYW4gaGF2 aW5nIGEgZ2VuZXJpYyBoYW5kbGVyIHdoaWNoIGRvZXMKPiBlcF9kZXF1ZXVlKCkgJiBlcF9xdWV1 ZSgpLiBQbGVhc2UgcHJvdmlkZSB5b3VyIHN1Z2dlc3Rpb24gb24gdGhpcyBpbXBsZW1lbnRhdGlv bi4KCmNhbGwgZXBfZGVxdWV1ZSgpCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8FBCC43441 for ; Thu, 29 Nov 2018 12:51:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 97E862081B for ; Thu, 29 Nov 2018 12:51:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 97E862081B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728310AbeK2X44 (ORCPT ); Thu, 29 Nov 2018 18:56:56 -0500 Received: from mga12.intel.com ([192.55.52.136]:61844 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727787AbeK2X44 (ORCPT ); Thu, 29 Nov 2018 18:56:56 -0500 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2018 04:51:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,294,1539673200"; d="asc'?scan'208";a="278767462" Received: from pipin.fi.intel.com (HELO localhost) ([10.237.72.97]) by orsmga005.jf.intel.com with ESMTP; 29 Nov 2018 04:51:36 -0800 From: Felipe Balbi To: Anurag Kumar Vulisha , Greg Kroah-Hartman , Alan Stern , Johan Hovold , Jaejoong Kim , Benjamin Herrenschmidt , Roger Quadros Cc: "linux-usb\@vger.kernel.org" , "linux-kernel\@vger.kernel.org" , "v.anuragkumar\@gmail.com" , Thinh Nguyen , Tejas Joglekar , Ajay Yugalkishore Pandey Subject: RE: [PATCH V6 01/10] usb: gadget: udc: Add timer for stream capable endpoints In-Reply-To: References: <1539436498-24892-1-git-send-email-anurag.kumar.vulisha@xilinx.com> <1539436498-24892-2-git-send-email-anurag.kumar.vulisha@xilinx.com> <87k1lfiwx3.fsf@linux.intel.com> Date: Thu, 29 Nov 2018 14:51:32 +0200 Message-ID: <87h8g0yrl7.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Anurag Kumar Vulisha writes: >>> diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/cor= e.c >>> index af88b48..41cc23b 100644 >>> --- a/drivers/usb/gadget/udc/core.c >>> +++ b/drivers/usb/gadget/udc/core.c >>> @@ -52,6 +52,24 @@ static int udc_bind_to_driver(struct usb_udc *udc, >>> /* -------------------------------------------------------------------= ------ */ >>> >>> /** >>> + * usb_ep_stream_timeout - callback function for endpoint stream timeo= ut timer >>> + * @arg: pointer to struct timer_list >>> + * >>> + * This function gets called only when bulk streams are enabled in the= endpoint >>> + * and only after ep->stream_timeout_timer has expired. The timer gets= expired >>> + * only when the gadget controller failed to find a valid stream event= for this >>> + * endpoint. On timer expiry, this function calls the endpoint-specifi= c timeout >>> + * handler registered to endpoint ops->stream_timeout API. >>> + */ >>> +static void usb_ep_stream_timeout(struct timer_list *arg) >>> +{ >>> + struct usb_ep *ep =3D from_timer(ep, arg, stream_timeout_timer); >>> + >>> + if (ep->stream_capable && ep->ops->stream_timeout) >> >>why is the timer only for stream endpoints? What if we want to run this >>on non-stream capable eps? >> > > I have seen this issue only with stream capable eps between PRIME & > EPRDY. But this issue can potentially occur with non-stream endpoints > also. Will remove this stream capable checks in next series of patch. you're adding support for transfer timeouts, which some gadgets may want regardless of endpoint type. One use is to correct cases of streams going out of sync. >>> + ep->ops->stream_timeout(ep); >> >>you don't ned an extra operation here, ep_dequeue should be enough. >> > > I think issuing ep_dequeue() would be more trickier than calling ep->ops-= >stream_timeout(). > This is because, every gadget driver has their own way of handling ep_deq= ueue. Some > drivers (like dwc3) may sleep for an event (wait_event_lock_irq) in the e= p_dequeue routine. not anymore. There's, now, a requirement that ->dequeue can be called from any context. > Since we are calling ep_dequeue from timer timeout callback which is in s= oftirq context, > sleeping or waiting for an event would hang the system. Also adding ep->o= ps->stream_timeout() > would make the gadget drivers handle the issue in better way based on the= ir implementation. no problems > Another advantage is the drivers which doesn't have this timeout issue do= esn't have to register the > timeout handler and can avoid the logic of deleting the timer for every r= equest. So, I think > ep->ops->stream_timeout() would be better than having a generic handler w= hich does > ep_dequeue() & ep_queue(). Please provide your suggestion on this impleme= ntation. call ep_dequeue() =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAlv/4NQACgkQzL64meEa mQaiwA//Ue5yvbElCDJQo5PRqexmbMqcB2q3FcIJOPsHk2SOEqgtT9v6CA9MtDdR 1EzvCRZM2GzvjysWShCP4555joiMWhMfBYKU/Va1y9ZCwXFLvzKdmdZzQlsNmQU2 9tkTkCzvbB9j5oK1WlcjKidQ+Xz3s3ccymayA3n7ZYw1/G27vliPfVPc8p7KMwor 50i19EyyPsSNF2D3QPbnknvdZqGoLs1k1tuyYJfmxvr5n0nBV4vqsJ4lpvcqQBox Jp/Uu5V3/jkcrQFbQiipJRCvrSGxLSeP437K8X6KqQlOlQNrkxHHQTzDOgBGAQf7 ZkocFmTzlIsNUHszEnsln9RhjcRyvk19sIPkKLIpxgawRCxrOBIWAw+ujBm2gpIX 5B60bNspRCQAt4Hc1jDKi1a8yyaqt0JbIGhLkz/d6rFlg54UdT5eweHydwyDTCFv btYRJOcZ9iP6zQZlHFN5osVztBGy3ppMAwqxtJGWRPN4TIq0qUKBqroGLfjx3Er+ l7vcAnJoiDI6vL4IgS/wksiHx1OXVpoZNP5SmHNCxfMZQ2REIOnQ4Z/c6rmvPM4f AWJ5tE58UoQaNQ/5W5jRDLgDWZSTUv6b7ihzAp8CPWBHPtZjWHSK6aWmqn1p5G9H fG8+rd2J8P6T1PQgTVS/RLKFX98wa+O8G3X3lPp8F+xMH4ntylg= =fe1M -----END PGP SIGNATURE----- --=-=-=--