Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp419897pxp; Sat, 19 Mar 2022 06:15:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyn640XRVyyaYIoeAO4AGbibszWAASfpR/dF6BFaZ34BqCRiseoEX535c4DQgfKD1tNDkoI X-Received: by 2002:a17:902:ce8a:b0:154:361b:48d1 with SMTP id f10-20020a170902ce8a00b00154361b48d1mr1488041plg.72.1647695722133; Sat, 19 Mar 2022 06:15:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647695722; cv=none; d=google.com; s=arc-20160816; b=JAD3xjQ+dOS/m6aMUERs+LhYatnzbrEKdbkKoU4jyt3Ju801oR73xffJNdNXE5M5S1 c3LD/GTKdXqLgEFUYsx5eOt2OnunCSVtXtkvo9QBI/xjQCNvtpqOMQUc/0aq8wRNbJkl EROA5QCpokwPi0GutwTEAkd7v/TP/czqvKvCWO4g6ZH0zdrg+ckJX0cABsOpCYrVR+V/ xy6N1p/+JyK1TtN1ZKOnk1sMgs8rDcrBxLI7743iVjtXjC/FbdojGMmIwTQcVFFN37+x 5MTLVyW245dhYbPjf4OlizQ0SxSPWlBs7MviXljocbiq6xxLAPUEWd2y2W+GthzMQz2x UNGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id; bh=maD9WYzQoX9EfbAYCpSRxA5ZfrhfVLTSAEbYtVec0eo=; b=aMY9xMKJ/Vl/FJOTV9f++a4l25tSNHxPTeKqUpU6J56xsHH53ZFbGA29q8egnzZb89 MV5T9P5vZpQyJFykfU9EfU9alQDn5fg5xi0Y3w4yOkoax1lCPfj8EocMMyHUMkFehDpt 1u9Kzw2p8w1RevpODqLUYb1g4K9ISRs/kr6nOArmSyoy1DA2UkeBePnhD9CpnJeq6QiB ilQC7+B1cxIA6WJCvBZr8wzd2YvCHU3LDg+40twvNqFxRapKL9g0mrMm15tAWOyCgAco KP4s/MJjikWTHFMYw2Rlp8/EEv2Gzl6d7yJIyCK3KrbKJG0I1ZUD1nk8STDKNJsHxU2N hLww== 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:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m5-20020a655645000000b003816043ee95si7997806pgs.138.2022.03.19.06.15.07; Sat, 19 Mar 2022 06:15:22 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236127AbiCRMTT (ORCPT + 99 others); Fri, 18 Mar 2022 08:19:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236130AbiCRMTR (ORCPT ); Fri, 18 Mar 2022 08:19:17 -0400 Received: from ZXSHCAS2.zhaoxin.com (ZXSHCAS2.zhaoxin.com [203.148.12.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2B677562E; Fri, 18 Mar 2022 05:17:55 -0700 (PDT) Received: from zxbjmbx1.zhaoxin.com (10.29.252.163) by ZXSHCAS2.zhaoxin.com (10.28.252.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Fri, 18 Mar 2022 20:17:52 +0800 Received: from [10.29.8.49] (10.29.8.49) 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; Fri, 18 Mar 2022 20:17:51 +0800 Message-ID: <0a78380a-89bc-a51a-5cb3-e2f313d2c0a5@zhaoxin.com> Date: Fri, 18 Mar 2022 20:17:50 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: , , , , CC: , From: "WeitaoWang-oc@zhaoxin.com" Subject: [PATCH] USB: Fix xhci ERDP update issue Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.29.8.49] 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,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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. If the number of TRB events to be processed in a given interrupt is 256. The local variable "event_ring_deq" that records in interrupt handler is equal to software_dequeue. It will cause driver not update ERDP,then software dequeue pointer is out of sync with ERDP on interrupt exit. On the next interrupt, the event ring may full but driver will not update ERDP as software_dequeue 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 To avoid this issue by update software record local variable when handles 128 TRB events. Fixes: dc0ffbea5729 ("usb: host: xhci: update event ring dequeue pointer on purpose") 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 d0b6806275e0..f9707997969d 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.17.1