Received: by 10.223.185.116 with SMTP id b49csp5690889wrg; Tue, 27 Feb 2018 19:05:42 -0800 (PST) X-Google-Smtp-Source: AH8x227nYHhLMwppB2oHshieWueBLMkPOw7lhvS8SY9dUIxSgoC/ZKOeCubmizvoVgfyif4DdzWO X-Received: by 10.98.75.129 with SMTP id d1mr14540248pfj.19.1519787142680; Tue, 27 Feb 2018 19:05:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519787142; cv=none; d=google.com; s=arc-20160816; b=DaFkTNSjcagOSptZ9mBJqF/YnTQmhkLVGrju2AQf5MhCFrqbDk6grQYk0pSZbAPMXN 7l2sjGEKepehjcuDRGFQlmS7nHa7efy5TPjNadTsBvHP/p3uDmouWJJ5K8CVvkiscrRU gwMRitIHk+z2jEo6h3iIKMXiiKZVLGyz/6svQC89wIyGgGMqXSS8Kx676J54cqa33j4r Cf2+hPgiwP8GiclmokgctNAsFAtDPQ9WlAIEZvzcROkIA9wUCGQvpwkRA03oTXlHi0Ub X4MaB2/l7LI70r22G/m7o3zl5OkTsJ2mWM3tbLwJFRPSOzjcQLGn2lom1yZCHYg6CVnE EK9w== 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 :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=+7hsqK6RUCpHKA5PyTV1wKMwXrxNG6mfVuC+741A/MI=; b=QxUHPoBMpnrv/bLjcL1Q6Xpg5iQxzU276tg0jZgbC3rh/eRpShQg4yDPIb+G/6JMHs lcc3ARu1X262HjWQbksFXk75MCm/d/U3Z6/q7bJYAI4c2PgDUSyaDtDwPvEUMxEG/8DQ UHYpqGQIgp7H0mfVmtAe+lizb+t/zL6eXTs7eXJ8C/3AGe/RGl4B9OWOxQvFZfFUK9Ud +r806YAoFOBxmv5dEuqiOtqxppKPsyLJHlOzDWK3QzVGDbVDEpBLksTMSmh6JpZlnxjE a0HxsLYL0KbU0DqvQnnz+Rfssx1O5R4Rq6UWIR8a/6CdNSbWbTsdn/UftyEE4FL3WTQp YskQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QpIDnx8Y; 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 l3si400845pgp.141.2018.02.27.19.05.28; Tue, 27 Feb 2018 19:05:42 -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=QpIDnx8Y; 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 S1751960AbeB1DE2 (ORCPT + 99 others); Tue, 27 Feb 2018 22:04:28 -0500 Received: from mail-oi0-f68.google.com ([209.85.218.68]:45484 "EHLO mail-oi0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751942AbeB1DEY (ORCPT ); Tue, 27 Feb 2018 22:04:24 -0500 Received: by mail-oi0-f68.google.com with SMTP id j79so720345oib.12 for ; Tue, 27 Feb 2018 19:04:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+7hsqK6RUCpHKA5PyTV1wKMwXrxNG6mfVuC+741A/MI=; b=QpIDnx8YxH7kDbmNBk6fRq1/fyqzoH8k5hn4Le0jPtqQIIWUvjCLG1A5H+QiDBsNyU CB4qpZVNyx8xu6lQLCgyRH3cnSDuq6b2cRGsoHcfVLhSjKbO05672IJGff0boEFKRdHf V9DeAhCKF4tbEx2hf+6bCJemYC8Y6K/fbiiwY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+7hsqK6RUCpHKA5PyTV1wKMwXrxNG6mfVuC+741A/MI=; b=qF055mvG8THKlBMfnZP/3OhP5bBmIN4Q2au1OWTqcqH2Ep1/XZetZf1eTCO8hX9wmN Y5X5iO/u2+n4c5f5p23dkRsl71Xw77snYJFtKhrjfwolkOVZA64/IxjClRN7gmRIsAfJ YP6ZvWFoyohFsORTV9C56Vw9aoGbvPUY11/K6BO1iXp+DZ7Qbke9qZGIcCQY2ROE04BM TnZnngxIx8xgIRCUzE9Yo5YPYiaQgJ+WtUYDeUyZgcCpwwF4Mk87UakbbHWbeUFT6BDw aTBZ6QfVOSNq4LJkXXLAYMqdp5vffLofNnwD4dsrB0MjaxtE5PnWx9t1hugA25Me+LoI WCow== X-Gm-Message-State: APf1xPAuMD0m+vFfqkFFd1TxFB1zN8J7YEQTebFeXDx3YI5wbCrZnDnD quvV18hK89RMiEPEn3b5zKvcU7LMRpBR7iBEhbuDqQ== X-Received: by 10.202.51.68 with SMTP id z65mr6877157oiz.350.1519787063723; Tue, 27 Feb 2018 19:04:23 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.96.5 with HTTP; Tue, 27 Feb 2018 19:04:23 -0800 (PST) In-Reply-To: <1519730526-22274-1-git-send-email-rogerq@ti.com> References: <1519730526-22274-1-git-send-email-rogerq@ti.com> From: Baolin Wang Date: Wed, 28 Feb 2018 11:04:23 +0800 Message-ID: Subject: Re: [PATCH] usb: dwc3: Prevent indefinite sleep in _dwc3_set_mode during suspend/resume To: Roger Quadros Cc: Felipe Balbi , USB , LKML 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 Hi Roger, On 27 February 2018 at 19:22, Roger Quadros wrote: > In the following test we get stuck by sleeping forever in _dwc3_set_mode() > after which dual-role switching doesn't work. > > On dra7-evm's dual-role port, > - Load g_zero gadget driver and enumerate to host > - suspend to mem > - disconnect USB cable to host and connect otg cable with Pen drive in it. > - resume system > - we sleep indefinitely in _dwc3_set_mode due to. > dwc3_gadget_exit()->usb_del_gadget_udc()->udc_stop()-> > dwc3_gadget_stop()->wait_event_lock_irq() > > Let's clear the DWC3_EP_END_TRANSFER_PENDING flag on all endpoints > so we don't wait in dwc3_gadget_stop(). I am curious why the DWC3_DEPEVT_EPCMDCMPLT event was not triggered any more when you executed the DWC3_DEPCMD_ENDTRANSFER command? > > Signed-off-by: Roger Quadros > --- > drivers/usb/dwc3/gadget.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 2bda4eb..0a360da 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -3273,6 +3273,20 @@ int dwc3_gadget_init(struct dwc3 *dwc) > > void dwc3_gadget_exit(struct dwc3 *dwc) > { > + int epnum; > + unsigned long flags; > + > + spin_lock_irqsave(&dwc->lock, flags); > + for (epnum = 2; epnum < DWC3_ENDPOINTS_NUM; epnum++) { > + struct dwc3_ep *dep = dwc->eps[epnum]; > + > + if (!dep) > + continue; > + > + dep->flags &= ~DWC3_EP_END_TRANSFER_PENDING; > + } > + spin_unlock_irqrestore(&dwc->lock, flags); > + > usb_del_gadget_udc(&dwc->gadget); > dwc3_gadget_free_endpoints(dwc); > dma_free_coherent(dwc->sysdev, DWC3_BOUNCE_SIZE, dwc->bounce, > -- -- Baolin.wang Best Regards