Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2592561iob; Fri, 6 May 2022 06:26:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZgfHNgUmcY4X3pK2qCOC366SrIl00McH7lPvY2QjrKzvD4qaKxN0j4YVHJsqoRb7PgeFE X-Received: by 2002:a62:cd0e:0:b0:510:8a3f:7cfa with SMTP id o14-20020a62cd0e000000b005108a3f7cfamr580929pfg.12.1651843574203; Fri, 06 May 2022 06:26:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651843574; cv=none; d=google.com; s=arc-20160816; b=a6tzFuo9IruOKKeCfiBvy78BtjwHbv/AwH1XC+xUhPxMuhpWzgLy4urlclmBxeG1XY I1rQSSe7njDIJNVDSNMmViC8N9W6bYA/bPNjqgdGZDHYxBEdvYH6OK/18mwmFwKV3GyG eN1wHPboSggoJveG5Z/GEJVshqE37J9jt2haU2r6yh3FljEP/f97hPi6p1MnbTdD1r85 PndYm8Syafvo/0fHsW7iELfaKM7WQ0SJmXYuy+tl4k0a/WVfIEfG23MR00urv6YcKUwE VgJp+fJXBogRxt/DUFssp6AKUytYh1HBax/+Shupm3z0oAE0D5jSO4Lg5aS34H8bciin 1TIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=X2WG4tD5hBpL6FDEgH0jo9u1E+YIMJ8B6QvKvyOeoes=; b=J7pCiM71t6NDGRF0RdZEhBtfSShm1j4JknLUnbZGTIujTDNRHthTv4z6Ym5chvb8cU NgzcfQl26GxJKZPdG1D6yOp55zsgtVG0+bNbnfuNvV0OkL/REngvlcXFxI4PcSKkT/ck V0zxYoRZGjrlLuJfm/1uDb9IIEGvrcMqD7tvFDZnn/FgNgYV/5lrHvSO/KuB936MPC1+ x1sUPRMji7dPb++HsrsmEm4ylAZEjV7pdRH7g+pRuNQrJYITgUAO2W4p7oPozoo8uNT5 0J8lzzLOKT4am85LBTm+Rmagzx1x39D9M0fRnbfyD6HaeOulgM3EOM2gmiyXfwE7FTzs 7kJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YPL0fLsj; 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=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k124-20020a632482000000b0038653b8ab83si4920491pgk.204.2022.05.06.06.25.56; Fri, 06 May 2022 06:26:14 -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=@linuxfoundation.org header.s=korg header.b=YPL0fLsj; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356627AbiEDRas (ORCPT + 99 others); Wed, 4 May 2022 13:30:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356796AbiEDRJo (ORCPT ); Wed, 4 May 2022 13:09:44 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 202391D326; Wed, 4 May 2022 09:55:36 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 837F1B82795; Wed, 4 May 2022 16:55:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E7F1C385AF; Wed, 4 May 2022 16:55:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1651683336; bh=syvbfAMOEbim3F1NblPad85qNNOn39u3qZiZAyUDIdY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YPL0fLsjFSg9n75m686DLMEVV8iHC8giQRgx8pWG/TzZsUkp/aC4EVLRJP5tKWJCG H0mS2IWTOStB6zH57PCGWuBdrBS3h+bZGXNsxmJ5LMo7oMnDNPNnJcZbsnYQvxHTrC 6e4ku9O8MOwvaxHQPO/t8MECKZLNg4ammG9XmDyI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Henry Lin , Mathias Nyman Subject: [PATCH 5.17 011/225] xhci: stop polling roothubs after shutdown Date: Wed, 4 May 2022 18:44:09 +0200 Message-Id: <20220504153111.278638853@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220504153110.096069935@linuxfoundation.org> References: <20220504153110.096069935@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, 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 From: Henry Lin commit dc92944a014cd6a6f6c94299aaa36164dd2c238a upstream. While rebooting, XHCI controller and its bus device will be shut down in order by .shutdown callback. Stopping roothubs polling in xhci_shutdown() can prevent XHCI driver from accessing port status after its bus device shutdown. Take PCIe XHCI controller as example, if XHCI driver doesn't stop roothubs polling, XHCI driver may access PCIe BAR register for port status after parent PCIe root port driver is shutdown and cause PCIe bus error. [check shared hcd exist before stopping its roothub polling -Mathias] Cc: stable@vger.kernel.org Signed-off-by: Henry Lin Signed-off-by: Mathias Nyman Link: https://lore.kernel.org/r/20220408134823.2527272-3-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/xhci.c | 11 +++++++++++ 1 file changed, 11 insertions(+) --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -778,6 +778,17 @@ void xhci_shutdown(struct usb_hcd *hcd) if (xhci->quirks & XHCI_SPURIOUS_REBOOT) usb_disable_xhci_ports(to_pci_dev(hcd->self.sysdev)); + /* Don't poll the roothubs after shutdown. */ + xhci_dbg(xhci, "%s: stopping usb%d port polling.\n", + __func__, hcd->self.busnum); + clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); + del_timer_sync(&hcd->rh_timer); + + if (xhci->shared_hcd) { + clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); + del_timer_sync(&xhci->shared_hcd->rh_timer); + } + spin_lock_irq(&xhci->lock); xhci_halt(xhci); /* Workaround for spurious wakeups at shutdown with HSW */