Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp402320ybl; Tue, 28 Jan 2020 05:24:13 -0800 (PST) X-Google-Smtp-Source: APXvYqyLopWqw8gaq1/wrHlpye35JrTF8Leqhs2QEBWEfHBfXtagczq8h5mBPnFN8sK24++IZ4GZ X-Received: by 2002:a9d:4d90:: with SMTP id u16mr15624039otk.159.1580217853149; Tue, 28 Jan 2020 05:24:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580217853; cv=none; d=google.com; s=arc-20160816; b=cGEqEDEd0GN2ca3hwl/UcaWDVQizAyaPCp5r+2HCj29JUNzKJfscAl2V2aFBCSWH6c RpJhC2bijxoFPqgULVFbFyOgZlxpjFkE1a47tUaAKaxihiW44415znzCCpn6Zbmq9Bqp MQ1cOdNSM9i8lg6pxS1zK653qE3R1xeKj1qoHjiLzIOJAr1gXzffBOpl52IUtAtZBK7g NXgoza80gfssg5PZyYhMejG8kbllamu7Gqd55selGP8QJvQ2Dt+IdUEFb2qBu6yAaSGt JOCMrN6bIBZhNuXLY9U1g9Eo5wxf5HqBGd70Q/LNRSwMVWJbUmvaSZ86pnQ5Fs+2npG8 J4lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:dkim-signature; bh=LhZkJsFAE45iuiXTZCAvO5GLd86KmfP3egSUUi14+ew=; b=o/bmhkFVYOS7N0XJjzXBlkARrHx3kfgYuY7/Qc6VQ/1hMgw+Px9vA9WsMwZc4dSg2V 95WYtaZP+1QNeev5UyxWBcLh81/SKgnUbrfhrtTV2lgzk6IA8Kp9dtrrTraTVvjC0GN1 n0vaTcbVJ7u5Js9pGSvyjldTlv++PUWk1gRAXCL0gQ76xn90/Dl95AQuokhrIM4dMvL4 HLD4FT4MPTA9nAa6v6XIZxe+REZ54Dr8frsycIuXe5hN5bsSdDwxGR7GH/ZQKlcZlTGD WBWISxe0naxVrmAgFkpJf4l3Oyqwzxft6+hD1ON5yPvUZWNdlLVHJVFGpIh9d5rZ/Nvw LYqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=WAAukqEt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 16si9015550otu.77.2020.01.28.05.24.00; Tue, 28 Jan 2020 05:24:13 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=WAAukqEt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726257AbgA1NXE (ORCPT + 99 others); Tue, 28 Jan 2020 08:23:04 -0500 Received: from mail-lf1-f67.google.com ([209.85.167.67]:35783 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725852AbgA1NXE (ORCPT ); Tue, 28 Jan 2020 08:23:04 -0500 Received: by mail-lf1-f67.google.com with SMTP id z18so9062999lfe.2; Tue, 28 Jan 2020 05:23:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=LhZkJsFAE45iuiXTZCAvO5GLd86KmfP3egSUUi14+ew=; b=WAAukqEtRflwe2nAyxTDtZ8BvTlqv0XesJsLDApUAqFN6wh2+bdZYiJMfr1aPn/cnq Idg4/AUj6U4zWnZgKHTwHc9tUVmqFI8lZ2yKR3JT9pM2ymjOylx7PDbC0tTQCaxM+yEm 6YjJdSTQE/E5JhDs+BR8QmqXQvWgAUx8uyviwaewVbq/DQYoPdZTLwd181pmoOtNGc+r cUXBndaafq15ZILKbcCmUx/AIArUScQ5CjfkXEQWjYwBHI704AceUmxzAZcESD4ppqLE qCFIDFbUnVTKNUbkPXY99tWqHredyYRuwBw3kr0NOgkEwfrxz29DR1vxuwWQFg43w3rv X98A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:in-reply-to:references :date:message-id:mime-version; bh=LhZkJsFAE45iuiXTZCAvO5GLd86KmfP3egSUUi14+ew=; b=I20j7BTxLDLNbm/JRCbs3LnPe9oj1qsXmDRjZiMUVBzouAq8cNqns6+s01MZdoMgiN jvTTA1/i23tfxSzB6kmhDaYBhu/GSqIObf4d/nVA0oBgPrsjrWYli5hDerO6ISEUQI6e LQJzPzQJE+v0sJzunwhQGxGDl+Ntc4QhDrDSLFaJ1Kp5aEGIKpHNx0SBnPXHGamPjgjV U/nrfX4+8DwGnSiD9KOm+ildaYJl3c0efVpzA953oTq/MzmZKwiixlBEVVh1RXhB5nGC lHWG4XKkQKMdzyD6shWPErmmQ2C7GWHogDDmiLT8vxMXaQWpJzvH+8TYxVhcVhKd/zx2 NMiQ== X-Gm-Message-State: APjAAAWpvEdcwuZ/nVNf7kf0VfqErFrBa4VET/0EZXp25YOhr8IYeOD1 daMXYsnl8R8+hi7/ka+zsLk= X-Received: by 2002:ac2:5964:: with SMTP id h4mr605146lfp.213.1580217780667; Tue, 28 Jan 2020 05:23:00 -0800 (PST) Received: from saruman (88-113-215-33.elisa-laajakaista.fi. [88.113.215.33]) by smtp.gmail.com with ESMTPSA id a9sm9875977lfk.23.2020.01.28.05.22.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 28 Jan 2020 05:22:59 -0800 (PST) From: Felipe Balbi To: John Stultz , lkml Cc: Anurag Kumar Vulisha , Yang Fei , Thinh Nguyen , Tejas Joglekar , Andrzej Pietrasiewicz , Jack Pham , Todd Kjos , Greg KH , Linux USB List , stable , John Stultz Subject: Re: [PATCH v2] usb: dwc3: gadget: Check for IOC/LST bit in TRB->ctrl fields In-Reply-To: <20200127193046.110258-1-john.stultz@linaro.org> References: <20200127193046.110258-1-john.stultz@linaro.org> Date: Tue, 28 Jan 2020 15:22:54 +0200 Message-ID: <87sgjz90lt.fsf@kernel.org> 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, John Stultz writes: > From: Anurag Kumar Vulisha > > The current code in dwc3_gadget_ep_reclaim_completed_trb() will > check for IOC/LST bit in the event->status and returns if > IOC/LST bit is set. This logic doesn't work if multiple TRBs > are queued per request and the IOC/LST bit is set on the last > TRB of that request. > > Consider an example where a queued request has multiple queued > TRBs and IOC/LST bit is set only for the last TRB. In this case, > the core generates XferComplete/XferInProgress events only for > the last TRB (since IOC/LST are set only for the last TRB). As > per the logic in dwc3_gadget_ep_reclaim_completed_trb() > event->status is checked for IOC/LST bit and returns on the > first TRB. This leaves the remaining TRBs left unhandled. > > Similarly, if the gadget function enqueues an unaligned request > with sglist already in it, it should fail the same way, since we > will append another TRB to something that already uses more than > one TRB. > > To aviod this, this patch changes the code to check for IOC/LST > bits in TRB->ctrl instead. > > At a practical level, this patch resolves USB transfer stalls seen > with adb on dwc3 based HiKey960 after functionfs gadget added > scatter-gather support around v4.20. > > Cc: Felipe Balbi > Cc: Yang Fei > Cc: Thinh Nguyen > Cc: Tejas Joglekar > Cc: Andrzej Pietrasiewicz > Cc: Jack Pham > Cc: Todd Kjos > Cc: Greg KH > Cc: Linux USB List > Cc: stable > Tested-by: Tejas Joglekar > Reviewed-by: Thinh Nguyen > Signed-off-by: Anurag Kumar Vulisha > [jstultz: forward ported to mainline, reworded commit log, reworked > to only check trb->ctrl as suggested by Felipe] > Signed-off-by: John Stultz > --- > v2: > * Rework to only check trb->ctrl as suggested by Felipe > * Reword the commit message to include more of Felipe's assessment > --- > drivers/usb/dwc3/gadget.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 154f3f3e8cff..9a085eee1ae3 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -2420,7 +2420,8 @@ static int dwc3_gadget_ep_reclaim_completed_trb(str= uct dwc3_ep *dep, > if (event->status & DEPEVT_STATUS_SHORT && !chain) > return 1; >=20=20 > - if (event->status & DEPEVT_STATUS_IOC) > + if ((trb->ctrl & DWC3_TRB_CTRL_IOC) || > + (trb->ctrl & DWC3_TRB_CTRL_LST)) why the LST bit here? It wasn't there before. In fact, we never set LST in dwc3 anymore :-) =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAl4wNa8ACgkQzL64meEa mQZb7BAAmXPf4dz4rgNSd6F7EskOWnPTDig96416cMT8toKMH+wN+Gz/Dkjfl0/r Ll4+mU5DozR0pBQ7GMiqiyCNVZDkf+yXB4zSrmuHBY6mUGGu+MRmcOQ06dk85XFp Jv26A3gJyKmjx1YcORZCLlIgmuBQ9PSbPRaiOYA1JxRwmLW5vyxUdrqSN83/6Znb wiw2fHxOQqCQloiM611DuxvkoyV1JTDd3FQOwObBsMRqDORydRWHA1rWGAsE1DUP nCeG4aF0mtVKE2+GmP+ih6eDTsX9cFzJ9bqCJNqp3SpQFv67nse8v+vnZ+wARvAw 8GxLLHW6SiCodmWMilWJT8ugFTdLLnJJMU1qFVvCSvCaXYbWwTUbpCAlGFbZJ5FA Nfm4Nv3ra/KXHwZxNqZxqBJXki80rAwaCAUjVPYwr9X0u2dWMzP4bg+YzFrzt5lK 3SFZsy7OLUvDa3uAAdK6u/3Ra349G9nmgyicbArC0pRIAdqNIgXUqt25WC6fEFtU Q4YeykstP/A5u7TEFKnWeKEvH3VxgGW4J1QtQ+xerufv8H10SBFYjTCK58bNnHPa P6mrfLZairsbN0s4GDa0/6RCTJ9U9fXmo56eDfvYKcoKNbMcsb5rboX6kbscvVAP wU93kBdVCqVE1ab2dIwixEEDhO0QP491X75DU08adsibffcc/4U= =TNFV -----END PGP SIGNATURE----- --=-=-=--