Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp2542710pxb; Tue, 24 Aug 2021 01:22:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYJfD0Iyyky1j6kxhKPBAV2qFDBmm5mI2uaFE6cz6BtdMu1T4DnBzPhWzNA5CMyf5hRKxk X-Received: by 2002:a17:906:c9cb:: with SMTP id hk11mr39304468ejb.544.1629793333638; Tue, 24 Aug 2021 01:22:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629793333; cv=none; d=google.com; s=arc-20160816; b=p9ZLZ/Xf1yfLVzFiMmYlqZtAxVVUTcm7mVAI/CFAzDa7fY78ovvnRYz+5gSETs0whE lvuYdBv92iRaOlDBY2Ss2TnKnjLcUlsszjE8ESHzO2cG9XWNeGywPdIjON4jE1aJWi1s hxggMSXzfP/OGqj4Xrzql5daYLuISwzShJXr+9C//FSTJbhiWxUpPn1o0L5jrVBU4aBJ h7UWuT3IMP45LDTSs5iLrDay3iLnPthw/KtdNvjCXo99q+vHQjpWeloCftCtZG3vfMih zQldSwtoNUF26ACzQ8gPe7s8tenc5cqohi4qkXbMT9vdBoFU7gDeCmPvvRe5OP6lAMxK duHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:in-reply-to:date:subject :cc:to:from:user-agent:references:dkim-signature; bh=7aii0MfFDB4qoZ5SmY/9RcC42xBRxlzkfpa4PNz25Zk=; b=pRtvlD26fCbivnBQxm+2p0U+fVdcGC67+l2d5hBm+HHPoPDT2YNwmTi/jWB37Rkx+y F4XT7ewoWFgCpuRQzwCw1412bDZ1nZPbXa/qtP0GA5hA9/UVVEAu1og4s/L6iqipH39p rocBgPEfPO9CWeEKMcu0ae/gDloGECK9xhLKkxH6A6W4N4DXxniYdLhHSMJz8hRpKJ+U 21IMyw6qDiz/+WDVOXoAzMOTuk1jJVkFvVr0prg/mCrMGNtOxhSXhDnLKR+Kb7eAAACB jmLFeMfHL8dHjdKYKN90tGRRW2nWBPnnJ6QN3bAtMt+sFn3GRIOlUmwzLh0PDxSAfBOW hvRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DcUkzqlf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bm24si16257024ejb.577.2021.08.24.01.21.50; Tue, 24 Aug 2021 01:22:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DcUkzqlf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235349AbhHXITP (ORCPT + 99 others); Tue, 24 Aug 2021 04:19:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:54878 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233692AbhHXITL (ORCPT ); Tue, 24 Aug 2021 04:19:11 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 21F1461220; Tue, 24 Aug 2021 08:18:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1629793107; bh=nykxD81K9jux0Z9cYpoVeP6Sogs7zBWpCbzPYz9PWvo=; h=References:From:To:Cc:Subject:Date:In-reply-to:From; b=DcUkzqlfF30qlcEzv0MWg1icXwzmG6RXblOkrmMUnY2rEbGruDFmV4TR4xnUWJIQj 6cqSjYVtIhd+XxZOTk6GQ3I8oQTjBYzF9HOro4u1MlCEQm8dYAw1d+0CmF23YjQYJA 6SBw/inxQ9nN5PUU2QzDIvT/PTY/Me5fO3eDwu5O09sw0GhO6BRRUDoZIJTWkDgOsb GVVC7taJd76uqlY/mH43Em86D6aCs4xr9BlQ2qV1tSawheKp5t3yxFVWuaoHBFSHFm SE5nGnujtPygw2A0laSYhpBeNspH1DgnIASkmrelOO0J4+ZxE337sR+BlRZyDFNi3A 9jF5IKearMCGw== References: <20210823222458.3760-1-wcheng@codeaurora.org> User-agent: mu4e 1.6.4; emacs 27.2 From: Felipe Balbi To: Wesley Cheng Cc: gregkh@linuxfoundation.org, Thinh.Nguyen@synopsys.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org Subject: Re: [PATCH v4] usb: dwc3: gadget: Stop EP0 transfers during pullup disable Date: Tue, 24 Aug 2021 11:17:59 +0300 In-reply-to: <20210823222458.3760-1-wcheng@codeaurora.org> Message-ID: <87y28r6ysv.fsf@kernel.org> MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Wesley Cheng writes: > During a USB cable disconnect, or soft disconnect scenario, a pending > SETUP transaction may not be completed, leading to the following > error: > > dwc3 a600000.dwc3: timed out waiting for SETUP phase > > If this occurs, then the entire pullup disable routine is skipped and > proper cleanup and halting of the controller does not complete. > > Instead of returning an error (which is ignored from the UDC > perspective), allow the pullup disable routine to continue, which > will also handle disabling of EP0/1. This will end any active > transfers as well. Ensure to clear any delayed_status also, as the > timeout could happen within the STATUS stage. > > Signed-off-by: Wesley Cheng > --- > Changes in v4: > - Fixed formatting and typos in commit text > - Removed braces due to the removal of the return statement > > Changes in v3: > - Added suggestion by Thinh to change dev_err to dev_warn > > Changes in v2: > - Removed calls to dwc3_ep0_end_control_data() and just allow the ep disables > on EP0 handle the proper ending of transfers. > - Ensure that delayed_status is cleared, as ran into enumeration issues if the > SETUP transaction fails on a STATUS stage. Saw delayed_status == TRUE on the > next connect, which blocked further SETUP transactions to be handled. > > drivers/usb/dwc3/gadget.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 5d084542718d..63f6d9f2a692 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -2428,10 +2428,8 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) > > ret = wait_for_completion_timeout(&dwc->ep0_in_setup, > msecs_to_jiffies(DWC3_PULL_UP_TIMEOUT)); > - if (ret == 0) { > - dev_err(dwc->dev, "timed out waiting for SETUP phase\n"); > - return -ETIMEDOUT; > - } > + if (ret == 0) > + dev_warn(dwc->dev, "timed out waiting for SETUP phase\n"); looks like a bug fix. Do we need to Cc stable? -- balbi