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: [v7,09/10] usb: dwc3: Check for IOC/LST bit in both event->status and TRB->ctrl fields From: Felipe Balbi Message-Id: <87pnu927oq.fsf@linux.intel.com> Date: Mon, 10 Dec 2018 08:54:13 +0200 To: Anurag Kumar Vulisha , Greg Kroah-Hartman , Shuah Khan , Alan Stern , Johan Hovold , Jaejoong Kim , Benjamin Herrenschmidt , Roger Quadros , Manu Gautam , "martin.petersen@oracle.com" , Bart Van Assche , Mike Christie , Matthew Wilcox , Colin Ian King 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+ IEhJIEZlbGlwZSwKPgo+Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+RnJvbTogRmVsaXBl IEJhbGJpIFttYWlsdG86YmFsYmlAa2VybmVsLm9yZ10KPj5TZW50OiBGcmlkYXksIERlY2VtYmVy IDA3LCAyMDE4IDExOjQyIEFNCj4+VG86IEFudXJhZyBLdW1hciBWdWxpc2hhIDxhbnVyYWdrdUB4 aWxpbnguY29tPjsgR3JlZyBLcm9haC1IYXJ0bWFuCj4+PGdyZWdraEBsaW51eGZvdW5kYXRpb24u b3JnPjsgU2h1YWggS2hhbiA8c2h1YWhAa2VybmVsLm9yZz47IEFsYW4gU3Rlcm4KPj48c3Rlcm5A cm93bGFuZC5oYXJ2YXJkLmVkdT47IEpvaGFuIEhvdm9sZCA8am9oYW5Aa2VybmVsLm9yZz47IEph ZWpvb25nIEtpbQo+PjxjbGltYmJiLmtpbUBnbWFpbC5jb20+OyBCZW5qYW1pbiBIZXJyZW5zY2ht aWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+Owo+PlJvZ2VyIFF1YWRyb3MgPHJvZ2VycUB0 aS5jb20+OyBNYW51IEdhdXRhbSA8bWdhdXRhbUBjb2RlYXVyb3JhLm9yZz47Cj4+bWFydGluLnBl dGVyc2VuQG9yYWNsZS5jb207IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPjsg TWlrZQo+PkNocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPjsgTWF0dGhldyBXaWxjb3ggPHdp bGx5QGluZnJhZGVhZC5vcmc+OyBDb2xpbiBJYW4KPj5LaW5nIDxjb2xpbi5raW5nQGNhbm9uaWNh bC5jb20+Cj4+Q2M6IGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc7Cj4+di5hbnVyYWdrdW1hckBnbWFpbC5jb207IFRoaW5oIE5ndXllbiA8dGhp bmhuQHN5bm9wc3lzLmNvbT47IFRlamFzIEpvZ2xla2FyCj4+PHRlamFzLmpvZ2xla2FyQHN5bm9w c3lzLmNvbT47IEFqYXkgWXVnYWxraXNob3JlIFBhbmRleSA8QVBBTkRFWUB4aWxpbnguY29tPgo+ PlN1YmplY3Q6IFJFOiBbUEFUQ0ggdjcgMDkvMTBdIHVzYjogZHdjMzogQ2hlY2sgZm9yIElPQy9M U1QgYml0IGluIGJvdGggZXZlbnQtPnN0YXR1cwo+PmFuZCBUUkItPmN0cmwgZmllbGRzCj4+Cj4+ Cj4+SGksCj4+Cj4+QW51cmFnIEt1bWFyIFZ1bGlzaGEgPGFudXJhZ2t1QHhpbGlueC5jb20+IHdy aXRlczoKPj4+Pj4gQEAgLTIyODYsNyArMjI4NiwxMiBAQCBzdGF0aWMgaW50Cj4+Pj5kd2MzX2dh ZGdldF9lcF9yZWNsYWltX2NvbXBsZXRlZF90cmIoc3RydWN0IGR3YzNfZXAgKmRlcCwKPj4+Pj4g IAlpZiAoZXZlbnQtPnN0YXR1cyAmIERFUEVWVF9TVEFUVVNfU0hPUlQgJiYgIWNoYWluKQo+Pj4+ PiAgCQlyZXR1cm4gMTsKPj4+Pj4KPj4+Pj4gLQlpZiAoZXZlbnQtPnN0YXR1cyAmIChERVBFVlRf U1RBVFVTX0lPQyB8IERFUEVWVF9TVEFUVVNfTFNUKSkKPj4+Pj4gKwlpZiAoKGV2ZW50LT5zdGF0 dXMgJiBERVBFVlRfU1RBVFVTX0lPQykgJiYKPj4+Pj4gKwkgICAgKHRyYi0+Y3RybCAmIERXQzNf VFJCX0NUUkxfSU9DKSkKPj4+Pj4gKwkJcmV0dXJuIDE7Cj4+Pj4KPj4+PnRoaXMgc2hvdWxkbid0 IGJlIG5lY2Vzc2FyeS4gQWNjb3JkaW5nIHRvIGRhdGFib29rLCBldmVudC0+c3RhdHVzCj4+Pj5j b250YWlucyB0aGUgYml0cyBmcm9tIHRoZSBjb21wbGV0ZWQgVFJCLiAgV2hpY2ggbWVhbnMgdGhh dAo+Pj4+ZXZlbnQtPnN0YXR1cyAmIElPQyB3aWxsIGFsd2F5cyBiZSBlcXVhbCB0byB0cmItPmN0 cmwgJiBJT0MuCj4+Pj4KPj4+IFRoYW5rcyBmb3IgcmV2aWV3aW5nIHRoaXMgcGF0Y2guIExldHMg Y29uc2lkZXIgYW4gZXhhbXBsZSB3aGVyZSBhCj4+PiByZXF1ZXN0IGhhcyBudW1fc2dzID4gMCBh bmQgZWFjaCBzZyBpcyBtYXBwZWQgdG8gYSBUUkIgYW5kIHRoZSBsYXN0Cj4+PiBUUkIgaGFzIHRo ZSBJT0MgYml0IHNldC4gT25jZSB0aGUgY29udHJvbGxlciBpcyBkb25lIHdpdGggdGhlCj4+PiB0 cmFuc2ZlciwgaXQgIGdlbmVyYXRlcyBYZmVySW5Qcm9ncmVzcyBmb3IgdGhlIGxhc3QgVFJCIChz aW5jZSBJT0MgYml0Cj4+PiBpcyBzZXQpLiBBcyBhIHBhcnQgb2YgdHJiIHJlY2xhaW0gcHJvY2Vz cwo+Pj4gZHdjM19nYWRnZXRfZXBfcmVjbGFpbV90cmJfc2coKSBjYWxscwo+Pj4gZHdjM19nYWRn ZXRfZXBfcmVjbGFpbV9jb21wbGV0ZWRfdHJiKCkgZm9yIHJlcS0+bnVtX3NncyB0aW1lcy4gU2lu Y2UKPj4+IHRoZSBldmVudCBhbHJlYWR5IGhhcyB0aGUgSU9DIGJpdCBzZXQsIHRoZSBsb29wIGlz IGV4aXRlZCBmcm9tIHRoZQo+Pj4gbG9vcCBhdCB0aGUgdmVyeSBmaXJzdCBUUkIgYW5kIHRoZSBy ZW1haW5pbmcgVFJCcyAobWFwcGVkIHRvIHRoZSBzZ2xpc3QpIGFyZSBsZWZ0Cj4+dW5oYW5kbGVk Lgo+Pj4gVG8gYXZvaWQgdGhpcyB3ZSBtb2RpZmllZCB0aGUgY29kZSB0byBleGl0IG9ubHkgaWYg Ym90aCBUUkIgJiBldmVudAo+Pj4gaGFzIHRoZSBJT0MgYml0IHNldC4KPj4KPj5TZWVtcyBsaWtl IElPQyBjYXNlIHNob3VsZCBqdXN0IHRlc3QgZm9yIGNoYWluIGZsYWcgYXMgd2VsbDoKPj4KPgo+ IE9rYXkuIEFsb25nIHdpdGggdGhpcyBsb2dpYyB0aGUgY29kZSBmb3IgdXBkYXRpbmcgY2hhaW4g Yml0IHNob3VsZCBhbHNvIGJlIG1vZGlmaWVkIEkgZ3Vlc3MuCgpub3QgcmVhbGx5Cgo+IFNpbmNl IHRoZSBJT0MgYml0IGlzIGFsc28gc2V0IHdoZW4gdGhlcmUgYXJlIG5vdCBlbm91Z2ggVFJCcyBh dmFpbGFibGUsIHRoZSBjb2RlIHNob3VsZCBiZQo+IG1vZGlmaWVkIHRvIG5vdCBzZXQgRFdDM19U UkJfQ1RSTF9DSE4gYml0IHdoZW4gdGhlIElPQyBiaXQgaXMgc2V0LiBJIHdpbGwgdXBkYXRlIGJl bG93Cj4gY2hhbmdlcyBhbG9uZyB3aXRoIHlvdXIgc3VnZ2VzdGlvbnMgYW5kIHJlc2VuZCB0aGUg cGF0Y2hlcy4KCm5vLiBBY3R1YWxseSBJIGRvbid0IHRoaW5rIHdlJ3JlIGFsbG93ZWQgdG8gc3Bs aXQgYSBzY2F0dGVyL2dhdGhlciBsaWtlCnRoYXQuIEkgZGlkIHRoYXQgcXVpdGUgYSB3aGlsZSBh Z28sIGJ1dCBJIGRvbid0IHRoaW5rIHdlJ3JlIGFsbG93ZWQgdG8KZG8gc28uIFdoYXQgd2Ugc2hv dWxkIGRvLCBpbiB0aGF0IGNhc2UsIGlzIG5vdCBldmVuIHF1ZXVlIHRoYXQgcmVxdWVzdAp1bnRp bCB3ZSBoYXZlIGVub3VnaCBmb3IgYWxsIG1lbWJlcnMgb2YgdGhlIHNjYXR0ZXIvZ2F0aGVyLiBC dXQgdGhhdCdzIGEKc2VwYXJhdGUgcGF0Y2gsIGFueXdheS4K 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=-1.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,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 BC426C04EB8 for ; Mon, 10 Dec 2018 06:54:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 70DDF2081C for ; Mon, 10 Dec 2018 06:54:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544424872; bh=lNIFJX4VyV0/RCb52HAnk/Baq8kRfNS2e/hYAIDDzrU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:List-ID:From; b=fhuHBUly6HxnoOY8NJ4J9/8WklwYryHlf4mSxYltaCDOInZ2hGp1kNaWWK+0lrQ07 qgmPNWjuol+loFAZgMICvVvldSjxAbjqLqcawD82eWNFuxZ2OLSJarSPh4nDS9N2mq YZaW5F4ZoLlEMupTaV5X8OfGyG6XtyGipA3ijJX8= DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 70DDF2081C 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 S1726581AbeLJGyb (ORCPT ); Mon, 10 Dec 2018 01:54:31 -0500 Received: from mga02.intel.com ([134.134.136.20]:47638 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726292AbeLJGya (ORCPT ); Mon, 10 Dec 2018 01:54:30 -0500 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Dec 2018 22:54:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,337,1539673200"; d="asc'?scan'208";a="302470539" Received: from pipin.fi.intel.com (HELO localhost) ([10.237.72.175]) by fmsmga005.fm.intel.com with ESMTP; 09 Dec 2018 22:54:25 -0800 From: Felipe Balbi To: Anurag Kumar Vulisha , Greg Kroah-Hartman , Shuah Khan , Alan Stern , Johan Hovold , Jaejoong Kim , Benjamin Herrenschmidt , Roger Quadros , Manu Gautam , "martin.petersen\@oracle.com" , Bart Van Assche , Mike Christie , Matthew Wilcox , Colin Ian King 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 v7 09/10] usb: dwc3: Check for IOC/LST bit in both event->status and TRB->ctrl fields In-Reply-To: References: <1543662811-5194-1-git-send-email-anurag.kumar.vulisha@xilinx.com> <1543662811-5194-10-git-send-email-anurag.kumar.vulisha@xilinx.com> <875zw82vfj.fsf@linux.intel.com> <874lbpx3vg.fsf@linux.intel.com> Date: Mon, 10 Dec 2018 08:54:13 +0200 Message-ID: <87pnu927oq.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: > HI Felipe, > >>-----Original Message----- >>From: Felipe Balbi [mailto:balbi@kernel.org] >>Sent: Friday, December 07, 2018 11:42 AM >>To: Anurag Kumar Vulisha ; Greg Kroah-Hartman >>; Shuah Khan ; Alan Stern >>; Johan Hovold ; Jaejoong Kim >>; Benjamin Herrenschmidt ; >>Roger Quadros ; Manu Gautam ; >>martin.petersen@oracle.com; Bart Van Assche ; Mike >>Christie ; Matthew Wilcox ; Col= in Ian >>King >>Cc: linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org; >>v.anuragkumar@gmail.com; Thinh Nguyen ; Tejas Joglek= ar >>; Ajay Yugalkishore Pandey >>Subject: RE: [PATCH v7 09/10] usb: dwc3: Check for IOC/LST bit in both ev= ent->status >>and TRB->ctrl fields >> >> >>Hi, >> >>Anurag Kumar Vulisha writes: >>>>> @@ -2286,7 +2286,12 @@ static int >>>>dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep, >>>>> if (event->status & DEPEVT_STATUS_SHORT && !chain) >>>>> return 1; >>>>> >>>>> - if (event->status & (DEPEVT_STATUS_IOC | DEPEVT_STATUS_LST)) >>>>> + if ((event->status & DEPEVT_STATUS_IOC) && >>>>> + (trb->ctrl & DWC3_TRB_CTRL_IOC)) >>>>> + return 1; >>>> >>>>this shouldn't be necessary. According to databook, event->status >>>>contains the bits from the completed TRB. Which means that >>>>event->status & IOC will always be equal to trb->ctrl & IOC. >>>> >>> Thanks for reviewing this patch. Lets consider an example where a >>> request has num_sgs > 0 and each sg is mapped to a TRB and the last >>> TRB has the IOC bit set. Once the controller is done with the >>> transfer, it generates XferInProgress for the last TRB (since IOC bit >>> is set). As a part of trb reclaim process >>> dwc3_gadget_ep_reclaim_trb_sg() calls >>> dwc3_gadget_ep_reclaim_completed_trb() for req->num_sgs times. Since >>> the event already has the IOC bit set, the loop is exited from the >>> loop at the very first TRB and the remaining TRBs (mapped to the sglist= ) are left >>unhandled. >>> To avoid this we modified the code to exit only if both TRB & event >>> has the IOC bit set. >> >>Seems like IOC case should just test for chain flag as well: >> > > Okay. Along with this logic the code for updating chain bit should also b= e modified I guess. not really > Since the IOC bit is also set when there are not enough TRBs available, t= he code should be > modified to not set DWC3_TRB_CTRL_CHN bit when the IOC bit is set. I will= update below > changes along with your suggestions and resend the patches. no. Actually I don't think we're allowed to split a scatter/gather like that. I did that quite a while ago, but I don't think we're allowed to do so. What we should do, in that case, is not even queue that request until we have enough for all members of the scatter/gather. But that's a separate patch, anyway. =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAlwODZcACgkQzL64meEa mQZaSRAAyNq2TKRZPznYqR/04p9Aip5KW/VtDfvM217J4J67CMszeRiJ131FHbeX 43JRSgZ2ThO2MSvIAhMDld50AmVfyh/5Um9lrYBWk2NZijYazNYb1rGO2dQoOoRI VR0SO9dEbjHpWx1Wq971KdHX9zYmqFvcWlwgvVxf2wItBOBwhPw3vQcNkCgq/tEc A6+Hr+JAZdsARTopcQfJSxYluyT/6xYLzzI5dC9jztUkZb45gfU6aV2L0OHHbEBK 5xCWPrW1qZIYI1AGi075Sli9XfsPogut4YZ5vATHb5+PQDLMB9W3h82HF+GH7azL EClmX5EPdd7VyPUPaFEPaP2Yra8uVEeuRe/VyS8He0Kndq/kMJIuFTAYRSycYnRL 0DaWpnVA7MLaHBDcUdQeNXtXR1O+V90igNjOhXuAqaWuJ/TJdkEWNsJrmN15vDHu GJrhRq09H3myDkUfUurLJfU7Zx5Lqi7ylhIF7Jbrb/jCAm3MNeAusm2rY5Zfo1m5 uzNER9fdltlzPspE/57APXlQIbCEKftapyOFdwxGwNPpIgzpBBWwbNG3oOfI1VsR 1keznt8hxZQuAXNDJNbzgiw5IsZQSI/dcxmC+Son/h1Fpv985ht7ytkRsSaoBLXZ K59+Q3T25qT5HvmEE7ESJMCxFvcBKSny4qF6XHBCiIL7TNUIbAY= =FGqq -----END PGP SIGNATURE----- --=-=-=--