Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp1400724rwl; Fri, 7 Apr 2023 15:41:32 -0700 (PDT) X-Google-Smtp-Source: AKy350ayFPIaLVKjSgrlku9ZHDsw0IvE5KF4SxHosi3BnvSsyCauC+NzxyNm8yAOiI56Y12uPslS X-Received: by 2002:a17:90b:50d:b0:240:5c43:7766 with SMTP id r13-20020a17090b050d00b002405c437766mr4340807pjz.4.1680907292699; Fri, 07 Apr 2023 15:41:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680907292; cv=none; d=google.com; s=arc-20160816; b=qiqHVuOeFnRl9lavFqmvB2bbfE2Mi2pvEovHOgAq4mY6IibpWRtGIGTWTpsTXXuHjE WckhsyjordSABW907n+nHM2WzoDCEqh0T1c6Gj4lrPMu46tNO3IH69Sfv4EgJRRjt0MC hl98H0ZZ80RSWXwGM+DVRy+VGwrwf3NB9+rHVBoeiJElaqhd/j19+T34kDjVyq79ToOr EiI5fYxhez6QLfoSLith/adn9JyTcBobc/CVISR0JfkzVAsJRVjOcLqOUwIaFcC7bwvr 1G6MQBsWVeME753yNeUlT3LZdRppFEpE5utvWh4ojP2w+t/WtGV4lbjHDyFPg1/HN3Iq vV0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=bI/wZP7ubTjCdHoQXeZS5R4X8U4Eh+xW5LDQQWeAzvw=; b=VKDSWYQ8PLcJ6b0VsJGfBqBrpy83YlFPCTNtniMzxwO0S7sWWbQanxTyD39cDWkCet tDjzb/rv9iueKwphw6Ph96l1vmUCQGUgzm/1UxB0yjPx0LUk3lS10eDJVz7mOfzeusHK 4+tXvwhecA63Paat64oXdQPvQAvO3kRt3AYLwyvXj32cpgJLYVZqbqwXXgOkTu6eIZFP nrStsC+KzPf8dT47iGOc5RfpOE4ez/cPTUjUPWdY9T8Labl8LbQ71BxM1V6ktiuWY73g 2FjsABwIeCldTWo6V5VxRjYcXHws8/WhMorGNm+PD2P/xwdHZ0YT5BHWuZclgikHGoGJ +gNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=iNuq+OOE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l184-20020a6391c1000000b0051418f7556bsi82827pge.895.2023.04.07.15.41.21; Fri, 07 Apr 2023 15:41:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=iNuq+OOE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230513AbjDGWkz (ORCPT + 99 others); Fri, 7 Apr 2023 18:40:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230413AbjDGWku (ORCPT ); Fri, 7 Apr 2023 18:40:50 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8349DCC23; Fri, 7 Apr 2023 15:40:46 -0700 (PDT) Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 337MeC6E023478; Fri, 7 Apr 2023 22:40:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=bI/wZP7ubTjCdHoQXeZS5R4X8U4Eh+xW5LDQQWeAzvw=; b=iNuq+OOEHuLKFivUAqE7GI0gY20XA4SlbCYhl6fpSZBrNK7a95QlBHoHdJcxLkPiXyq4 XkledpZT3cNk1lyKRVNQX6yKdKlx8tpQe5puFeEm7fM/mNkvN+k0aJGOOz4hb59WNKXG 9XKVAhrUclkM9O4cOGBFyvioG989UPmhEB4IQ66zY/2Z+UmSXPMC6bY0l9EWEVT0OTox qH+94WaFbrs84ffi45xXA9Aoy49ecvbzVlOhm0dNjrnerWoqIf8LnP5Gv5pN2eMYFXJF tRspnHmCdCeEyjWjE1K8HXIb2Jl0VY79JDgYOJcqQejEbRLTCa9jjoCF6T/k8PltHzFn gQ== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3psv4dmbu5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Apr 2023 22:40:40 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 337Mednk032525 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 7 Apr 2023 22:40:39 GMT Received: from hu-wcheng-lv.qualcomm.com (10.49.16.6) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Fri, 7 Apr 2023 15:40:38 -0700 From: Wesley Cheng To: , CC: , , , , Wesley Cheng Subject: [PATCH v2 3/3] usb: dwc3: gadget: Execute gadget stop after halting the controller Date: Fri, 7 Apr 2023 15:40:25 -0700 Message-ID: <20230407224025.22315-4-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230407224025.22315-1-quic_wcheng@quicinc.com> References: <20230407224025.22315-1-quic_wcheng@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: CVG6L4uznfyjBYkr0cg9LmP7ve9qeDrW X-Proofpoint-ORIG-GUID: CVG6L4uznfyjBYkr0cg9LmP7ve9qeDrW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-07_14,2023-04-06_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 spamscore=0 mlxlogscore=619 phishscore=0 bulkscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304070204 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Do not call gadget stop until the poll for controller halt is completed. DEVTEN is cleared as part of gadget stop, so the intention to allow ep0 events to continue while waiting for controller halt is not happening. Fixes: c96683798e27 ("usb: dwc3: ep0: Don't prepare beyond Setup stage") Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/gadget.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 91768f1bdbaf..9715de8e99bc 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2566,7 +2566,6 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc) * bit. */ dwc3_stop_active_transfers(dwc); - __dwc3_gadget_stop(dwc); spin_unlock_irqrestore(&dwc->lock, flags); /* @@ -2596,7 +2595,19 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc) * remaining event generated by the controller while polling for * DSTS.DEVCTLHLT. */ - return dwc3_gadget_run_stop(dwc, false, false); + ret = dwc3_gadget_run_stop(dwc, false, false); + + /* + * Stop the gadget after controller is halted, so that if needed, the + * events to update EP0 state can still occur while the run/stop + * routine polls for the halted state. DEVTEN is cleared as part of + * gadget stop. + */ + spin_lock_irqsave(&dwc->lock, flags); + __dwc3_gadget_stop(dwc); + spin_unlock_irqrestore(&dwc->lock, flags); + + return ret; } static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)