Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp268152ybl; Tue, 28 Jan 2020 23:37:15 -0800 (PST) X-Google-Smtp-Source: APXvYqxW+WvMhvYJLvEaMDrJCFyG7uKLC2Xz4bM5OJmIPLPLLdGFO1MrwEG9NtdRepxbY6hlTZdp X-Received: by 2002:a9d:5888:: with SMTP id x8mr18606780otg.361.1580283435212; Tue, 28 Jan 2020 23:37:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580283435; cv=none; d=google.com; s=arc-20160816; b=RdQKZRgJdk2nrxi+BCKLccKGp+45ACZCXq+zLi6oxbAF1nF0eGSu+543eNp6wgWqIf dlClpv8fz1UgfBg3nau0p3h/kLqJkQUxxEGhzJGt0RxfWo5hHiyOldQBN4jT5DbOTS79 PDK8E9pA1tRS3EBjw8nqJz7/hVaAVAzDUdRjS3zReW5tS++LICYlkJ00xFlD0RV1dj/l yCKIL5pPmQFVFDcFApANMrNWPWOJ7WC365JCvlyHi4cWRLy3y48p1OLermqdEE1NdtTw 0BXymnTkC7qYuwf4Qn/wmQEDz91Ns7pjMscNV/OZpemG81VBBMeYc+tbGKntD1Z5UoRd OimA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=FgvO10IJ4wBnszEHmPtvEGnuEA/o8QmjSQTp/J33OpI=; b=Z3ouqJLxN/b/YCMGlU8Vl5gVb1TfACVpqiqtcaze9p08JndqEHyKlI44II5GZrjzsn ewFHqnuKs9cpOjnTSZN37uphMqwpGPsGlV7P+CaTt3QtnFI4SlbEVQ7IaQ1/vOWA46vk zBlBmFEGF5HBtK3dqU7rSaWMwoyLq1Dcq04OGZaxIz8Ur6STXnt1qvEEJx3gtAzrkqiP dFEt0QykrvIrT6AmTaIiKit1nel+NheAmN61ChXdEOECzQwojmG4zfvRnPZxLYiznScB Qwx6k2HW04t9p/AWunNMfserBcGyGguMyuEuesSfzaiZXEaR5EyVFcsTlOjkSrEltjew c0gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=z3IfDOIS; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r82si680925oie.116.2020.01.28.23.37.02; Tue, 28 Jan 2020 23:37:15 -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=pass header.i=@linaro.org header.s=google header.b=z3IfDOIS; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726168AbgA2HgJ (ORCPT + 99 others); Wed, 29 Jan 2020 02:36:09 -0500 Received: from mail-oi1-f194.google.com ([209.85.167.194]:43373 "EHLO mail-oi1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726043AbgA2HgI (ORCPT ); Wed, 29 Jan 2020 02:36:08 -0500 Received: by mail-oi1-f194.google.com with SMTP id p125so13052471oif.10 for ; Tue, 28 Jan 2020 23:36:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FgvO10IJ4wBnszEHmPtvEGnuEA/o8QmjSQTp/J33OpI=; b=z3IfDOISdaN3RYKwrU29jiKORUsOWPToKO4Jx1+UApeDifFCMXtiIPEHKl3UZCrZci /XotVFBJkz/56iooATh6MvasehD0ohtNa8Q330q4mqH2sirBIq26a7soIpi08H9tTwqT lyUPtqrbqURAly09xmWwLXJwlKnzNZOsJ1+uilDXinguq6lmcBmOUOSu+/A4qzLpEG8q 2Y4JUdrK9btUO3ZpH4IsQ77xdl9OYrJp+QCkReAEtQG60+nYeF7YKXpZk5R4sk8vygmW Cej/8mWxpHIpMSJH331tNirh7osCFMY3/oISXByImEyJHh5o8V/EMweSFzb2FpwSzEv0 GgRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FgvO10IJ4wBnszEHmPtvEGnuEA/o8QmjSQTp/J33OpI=; b=qqyL4ImsH5/FjpexKDxZ8nulZzsth5qvhslvWEOfJzZPeOut0lztGqZEaDbp/YWPVA a7yefCez1QtFXU3LK6RuNt1G0EngpNIq19F/0HeNT7hgjlGpmqFEmRGTzLU7OabQ61s7 0oQTVZm9YKPm6Joi1YaczKSbUB+RiqGxOptzc7owDtphxNNxTa8E53LA02r9/ksbbnfb Ql6hg59tEuFze6Kb30ul9AJhmioBrYp8AmDLCJjBfPXSqjBhufFtts06CotEiPM6th1S ZHY461LCjtbiqVtQhVmOYkxqbEFWAPQZEHmfExrQ4zvlQAH0TK3bW4fBTd2HFcUeiq2K rWtQ== X-Gm-Message-State: APjAAAWa5B+6AtLsV53jxOnt+aQcql7nrLSp7a9U+Rict6H3vzrcCWxX +oLQWAWd+W1sxkDhFWPlFzr0ruxa2XcCMNeQcQdICw== X-Received: by 2002:a54:4396:: with SMTP id u22mr5698037oiv.128.1580283367480; Tue, 28 Jan 2020 23:36:07 -0800 (PST) MIME-Version: 1.0 References: <20200127193046.110258-1-john.stultz@linaro.org> <87lfpq915x.fsf@kernel.org> In-Reply-To: <87lfpq915x.fsf@kernel.org> From: John Stultz Date: Tue, 28 Jan 2020 23:35:56 -0800 Message-ID: Subject: Re: [PATCH v2] usb: dwc3: gadget: Check for IOC/LST bit in TRB->ctrl fields To: Felipe Balbi Cc: lkml , Anurag Kumar Vulisha , Yang Fei , Thinh Nguyen , Tejas Joglekar , Andrzej Pietrasiewicz , Jack Pham , Todd Kjos , Greg KH , Linux USB List , stable Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 28, 2020 at 11:23 PM Felipe Balbi wrote: > 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 > > since v5.5 is already merged, I'll send this to Greg once -rc1 is > tagged. It's already in my testing/fixes branch waiting for a pull > request. Great, thanks so much for queueing this! I'll be digging on the db845c side wrt the dma-api issue to hopefully get that one sorted as well. Thanks again for the help and analysis! -john