Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp966566pxp; Wed, 16 Mar 2022 22:54:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyzSMAbfU6WAOoRCSAgC5cBJTY3tf8B3m+KTUk3cVOsHaMs4/gh/ul2FAT5skD4v/zFpfsi X-Received: by 2002:a05:6a00:2284:b0:4f7:86a3:6f6 with SMTP id f4-20020a056a00228400b004f786a306f6mr3229238pfe.20.1647496491873; Wed, 16 Mar 2022 22:54:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647496491; cv=none; d=google.com; s=arc-20160816; b=cxrfsFq2VZqTZVicvEUImLSyvd+xUIsz3sNJ3uATM6gvBqoznRwuMGJG5hDyYelFvU nILN+0jKZ3zN6EAPzkhIb9E2PvHlc+sN4Y3JUzdsDq1OiXmPq7X6ePQBQXfIFb/EUvhD 2fHL81BGpWiXkSusLHG9drtwfydr7og67nQz0Qxmemcdvipxa6+wVpYEO1ti1jo9ArmB +8cXk4khq7ajgm1FnKwAQ9YvJoGX0LBDerZTDM3QHo+lTxAio+nTiz3qn43aoD7+tBn0 BCdOoU8V3Vh5pxnY0XSlT4Wq/B6zPYqkcW9ujXMI//Kdv/WA7Kqpr1hYdQf/49p5cO26 e8cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:user-agent:date:message-id:subject:from:cc:to; bh=EjRqYxlQKEwnpqmltLRztsRC+PdO0b6CL3S/0i/jMsA=; b=MNd15EGpXswfDHQRLwNcwNCpFUIU5ONMwwXTfTn/padNPaKB7BU0qEe6bH5K7vWGx/ vqtFWctkCnCGXndQpGnC7nVy5pFSCkSk2pEZgRjPW+QupkvpRZ6iDuArBBZvaNDjpW81 Knnyx82RqIEBYk+mTOS+roqPNP+hL3YFdNR/uSRPl/hJAK1atwoSmO6kH8VBBsbIMkcn wlXEGrsvggAZT/T1ybj6z6miAjNpH63tXX/34zqSJu3TijpQe/ymv0upKt2B+Dr08BdN JPLWtW5//6dB84qNT8X19EZ9xXVuExdvXC3qm2eyrza5GriI4Xl3U9SImkaj3jeuqlV+ jjRA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id d11-20020a056a0024cb00b004f72031baaasi4321732pfv.370.2022.03.16.22.54.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Mar 2022 22:54:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DC05513E16C; Wed, 16 Mar 2022 21:49:56 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236766AbiCNHlp (ORCPT + 99 others); Mon, 14 Mar 2022 03:41:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232409AbiCNHlp (ORCPT ); Mon, 14 Mar 2022 03:41:45 -0400 Received: from ZXSHCAS1.zhaoxin.com (ZXSHCAS1.zhaoxin.com [203.148.12.81]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EF1E40E65; Mon, 14 Mar 2022 00:40:35 -0700 (PDT) Received: from zxbjmbx1.zhaoxin.com (10.29.252.163) by ZXSHCAS1.zhaoxin.com (10.28.252.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 14 Mar 2022 15:25:27 +0800 Received: from [192.168.43.174] (124.64.16.6) by zxbjmbx1.zhaoxin.com (10.29.252.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 14 Mar 2022 15:25:24 +0800 To: , , , , CC: , , , From: "WeitaoWang-oc@zhaoxin.com" Subject: [PATCH] USB: Fix xhci ERDP update issue Message-ID: <3c576edf-89c3-ccf3-a43f-4ce2c1ced18d@zhaoxin.com> Date: Mon, 14 Mar 2022 15:25:23 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [124.64.16.6] X-ClientProxiedBy: ZXSHCAS1.zhaoxin.com (10.28.252.161) To zxbjmbx1.zhaoxin.com (10.29.252.163) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 On some situations, software handles TRB events slower than adding TRBs, xhci_irq will not exit until all events are handled. If xhci_irq just handles 256 TRBs and exit, the temp variable(event_ring_deq) driver records in xhci irq is equal to driver current dequeue pointer. It will cause driver not update ERDP and software dequeue pointer lost sync with ERDP. On the next xhci_irq, the event ring is full but driver will not update ERDP as software dequeue pointer is equal to ERDP. [ 536.377115] xhci_hcd 0000:00:12.0: ERROR unknown event type 37 [ 566.933173] sd 8:0:0:0: [sdb] tag#27 uas_eh_abort_handler 0 uas-tag 7 inflight: CMD OUT [ 566.933181] sd 8:0:0:0: [sdb] tag#27 CDB: Write(10) 2a 00 17 71 e6 78 00 00 08 00 [ 572.041186] xhci_hcd On some situataions,the0000:00:12.0: xHCI host not responding to stop endpoint command. [ 572.057193] xhci_hcd 0000:00:12.0: Host halt failed, -110 [ 572.057196] xhci_hcd 0000:00:12.0: xHCI host controller not responding, assume dead [ 572.057236] sd 8:0:0:0: [sdb] tag#26 uas_eh_abort_handler 0 uas-tag 6 inflight: CMD [ 572.057240] sd 8:0:0:0: [sdb] tag#26 CDB: Write(10) 2a 00 38 eb cc d8 00 00 08 00 [ 572.057244] sd 8:0:0:0: [sdb] tag#25 uas_eh_abort_handler 0 uas-tag 5 inflight: CMD Fixed this issue by update software record temp variable when handles 128 TRB events. Signed-off-by: Weitao Wang --- drivers/usb/host/xhci-ring.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index d0b6806..f970799 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -3141,6 +3141,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) if (event_loop++ < TRBS_PER_SEGMENT / 2) continue; xhci_update_erst_dequeue(xhci, event_ring_deq); + event_ring_deq = xhci->event_ring->dequeue; /* ring is half-full, force isoc trbs to interrupt more often */ if (xhci->isoc_bei_interval > AVOID_BEI_INTERVAL_MIN) -- 2.7.4