Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp449180iog; Mon, 13 Jun 2022 06:11:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwshkJv0r8VeKf99RaP96JsGOOmnLiQans5u7yd0tuI4+h+xexX386lxEKXl0M9wG9sGSLE X-Received: by 2002:a17:906:d7bc:b0:70a:99ef:d0b8 with SMTP id pk28-20020a170906d7bc00b0070a99efd0b8mr52896477ejb.624.1655125550900; Mon, 13 Jun 2022 06:05:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655125550; cv=none; d=google.com; s=arc-20160816; b=iM/ib18ZUvwcG1/4mYAxyzWJcu63gy3LrRc0wA9ZoLS2tdqUA0Ade7F73C2aOaqAES Ui22O0nAvF6A5TofQbm5bhclEx5qCWq+VjpsnXv2TJn1jxd3JT9vrDpIjUsbc+yZfDQW qtytuSE5JynvP5+PLUuXL+bzHeGExa9Km/DoRu3Mqxi1nLiZxDi6t8O2rogxd2a2svlB qfvYVo7s5hhqt1PaeXp+vien9TA0twaJozfAIPEPFlnUM4FQBpQ48LAkSg6aszlg6a/k iwMTdimvouS5qPuF1piZZWBbCYk4+xgMAUF+TZPWlU0NL3N0rL8xXZs061Gm4NPcF+80 s9nQ== 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=jzmok5jRg0tKGJQZkkUKWuTC3BaotNxoyzXplBh5O/o=; b=AltZ7gsbjiQ1MfWDDq73hjr2WKUA1kL3GyUz+afLdsha3SueQhz6zyJcfobXKfUlF4 N5y839CzCGZkjSt64ZN1fB94Yyaqk+FZ5d6dEPDObwf7lOEISA/LMYV4yoIuV5THFR6v m2ekHz+uAjjIfQ2fpID0/2zqbIpLPea4QE0Lg3T6MfAP/RFzvaib1gy2YpSzDK1yoSjG WEdL35ZaWPBJAhZJcXCvabcYyuKHd9WyCVj9L67oO3mID7bKJFIkpkAKKyWcq4sHBzrr pEYAMg3yZ18Hk3S+DOaedXGz61+YdJDMWS5KULA9aQSAjcrfWg/iBIEZYWoh2hEePTrD nebQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Rlex3cm7; 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 hp1-20020a1709073e0100b0070ad067c3d9si7232176ejc.773.2022.06.13.06.05.16; Mon, 13 Jun 2022 06:05:50 -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=Rlex3cm7; 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 S1355972AbiFMLrf (ORCPT + 99 others); Mon, 13 Jun 2022 07:47:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356406AbiFMLob (ORCPT ); Mon, 13 Jun 2022 07:44:31 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E1114738D; Mon, 13 Jun 2022 03:50:46 -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 dfw.source.kernel.org (Postfix) with ESMTPS id 872C0612BC; Mon, 13 Jun 2022 10:50:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9151DC34114; Mon, 13 Jun 2022 10:50:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1655117444; bh=ELu3yy7yIcm3DofcKPU4yWrv9X+QqBqmt/yCt5gDrQY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rlex3cm77nlg+Si005M1EkK3zHEEiVeNzohK0Y/iH3sCiJJUf0owHYkHohU32zebW EIDSExJzocC4ch3HZ90G752cZgwZ7JeN1DRVjhq2/OBxYdwD4ktVxdeS1Tpgx2Nt93 E9Dp8n2EThqu7FGgnGEVCZ4CYvT5TeWiXKl0V6mo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alan Stern , Evan Green , Sasha Levin Subject: [PATCH 5.4 375/411] USB: hcd-pci: Fully suspend across freeze/thaw cycle Date: Mon, 13 Jun 2022 12:10:48 +0200 Message-Id: <20220613094939.920685108@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220613094928.482772422@linuxfoundation.org> References: <20220613094928.482772422@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=-8.3 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: Evan Green [ Upstream commit 63acaa8e9c65dc34dc249440216f8e977f5d2748 ] The documentation for the freeze() method says that it "should quiesce the device so that it doesn't generate IRQs or DMA". The unspoken consequence of not doing this is that MSIs aimed at non-boot CPUs may get fully lost if they're sent during the period where the target CPU is offline. The current callbacks for USB HCD do not fully quiesce interrupts, specifically on XHCI. Change to use the full suspend/resume flow for freeze/thaw to ensure interrupts are fully quiesced. This fixes issues where USB devices fail to thaw during hibernation because XHCI misses its interrupt and cannot recover. Acked-by: Alan Stern Signed-off-by: Evan Green Link: https://lore.kernel.org/r/20220421103751.v3.2.I8226c7fdae88329ef70957b96a39b346c69a914e@changeid Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/core/hcd-pci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c index 9e26b0143a59..db16efe293e0 100644 --- a/drivers/usb/core/hcd-pci.c +++ b/drivers/usb/core/hcd-pci.c @@ -604,10 +604,10 @@ const struct dev_pm_ops usb_hcd_pci_pm_ops = { .suspend_noirq = hcd_pci_suspend_noirq, .resume_noirq = hcd_pci_resume_noirq, .resume = hcd_pci_resume, - .freeze = check_root_hub_suspended, + .freeze = hcd_pci_suspend, .freeze_noirq = check_root_hub_suspended, .thaw_noirq = NULL, - .thaw = NULL, + .thaw = hcd_pci_resume, .poweroff = hcd_pci_suspend, .poweroff_noirq = hcd_pci_suspend_noirq, .restore_noirq = hcd_pci_resume_noirq, -- 2.35.1