Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp745298rwr; Thu, 20 Apr 2023 06:03:25 -0700 (PDT) X-Google-Smtp-Source: AKy350Y+2AgMatbCvjNYRgMMZdi/hhH9yQV3W+Ku7S0h7b9umGSkfsZll+ua9gplYAikwfXwih3Q X-Received: by 2002:a0d:cbd4:0:b0:54c:657:1f19 with SMTP id n203-20020a0dcbd4000000b0054c06571f19mr691822ywd.9.1681995805714; Thu, 20 Apr 2023 06:03:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681995805; cv=none; d=google.com; s=arc-20160816; b=sSbJ1MZHNyDJoxl8w4dQZcCrPE+RUn7a0LixBBSg0WVGQChHFiPWcpAo6gvnb3+g/x vHSQNTj4hoOTlE3hV8sGrW8z78/P5hvJFc5X3wFwI2nuT5EcYbxNBd2odjmLKjWH1gx+ 3zDB5FLvMtu9ysrYOTMRUZVI5a3Br2ZocaVxTXkaV/GsiFZX1M44Rwjzx13O12J3Plpe xMq5FA1Gk4BwyDaS54/3kRlbB6sn+8x1STu3azMUJjQeaVmFmDyVXxPOVPal1gptu5cb 09MMcRQJgcQEADCKJ1f+MN/uR4HVG09jmplYfH2ChecPgsbUYc6flKUKoFzZFw2dH+Kc ISYw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=fLE9tMg1S+y52mJHeepsWqa/wGSHDhaLLeWS3MHOXJQ=; b=N0zeeUmzmla5FAzQr8rNi/+FAS12hcrr8axvBOssHtTBE6feeebyQkNH5H8YOXNmEV DFsX12505knG/p2LSy8IkYAdbpsQfZNsyPuWnkcTSdt8NhbTe3iHn6E/6sPLlVdok6+A kDDbM5ALCxDlLYnlJVcEPxPyQNS2e7mgRpHWZLxOolEOT5iUk/iLC6Rjo1jzpqGRHriC uooFKP2FmzXUmd+beeS2J0nA7KpF2HcbBQXcZvdub1sPjSL4K5L7ravIMxyvM/5JVSpc pe1ZbzZLmulPCUtfOYTxm5fjO9U/IkfHZ2LU2vHfHYoehp2CT0L7Bj5phCPnxD/rwDJl EFqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=kBRGCB11; 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=canonical.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i64-20020a816d43000000b00541995fe0besi1248715ywc.183.2023.04.20.06.02.09; Thu, 20 Apr 2023 06:03:25 -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=@canonical.com header.s=20210705 header.b=kBRGCB11; 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=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231183AbjDTNAo (ORCPT + 99 others); Thu, 20 Apr 2023 09:00:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230187AbjDTNAj (ORCPT ); Thu, 20 Apr 2023 09:00:39 -0400 Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F0AE65BF; Thu, 20 Apr 2023 06:00:37 -0700 (PDT) Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 1522241D96; Thu, 20 Apr 2023 13:00:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1681995636; bh=fLE9tMg1S+y52mJHeepsWqa/wGSHDhaLLeWS3MHOXJQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kBRGCB11Do1i/99WeIc+Cup6/KSCJIjpC1ztovsh7AlITDxxvZnebv3MCaY377Nwz Xm83QZuSCisFr55orPAQnQvjLWzzjbi8Bs8Zg3JkRTER49/Ehe2FKdcdPd5eX0huVT D7Q7S1XBu7XIeNic0JMgxwXVP3h4AuaNGBjB2WkRf/LAe6cFczDSriOOoCAuHFc6kb yNHcUInDTp5wcGUG6Wb0CtpEo6sPDeisSv9TmhT9tPXu30Nd70xx28CvLjWpR8C8EZ Wqzx+74n0rU2jzhVXnTjc1s7SAKtpRq3vludKSidtsWkROl5EA0gkLYNTdhH3CDkFo uM7HKTSoCBw2Q== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mika.westerberg@linux.intel.com, koba.ko@canonical.com, sathyanarayanan.kuppuswamy@linux.intel.com, Kai-Heng Feng , Mahesh J Salgaonkar , "Oliver O'Halloran" , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 3/4] PCI/AER: Disable AER interrupt on suspend Date: Thu, 20 Apr 2023 20:59:39 +0800 Message-Id: <20230420125941.333675-3-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230420125941.333675-1-kai.heng.feng@canonical.com> References: <20230420125941.333675-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, 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 PCIe service that shares IRQ with PME may cause spurious wakeup on system suspend. PCIe Base Spec 5.0, section 5.2 "Link State Power Management" states that TLP and DLLP transmission is disabled for a Link in L2/L3 Ready (D3hot), L2 (D3cold with aux power) and L3 (D3cold), so we don't lose much here to disable AER during system suspend. This is very similar to previous attempts to suspend AER and DPC [1], but with a different reason. [1] https://lore.kernel.org/linux-pci/20220408153159.106741-1-kai.heng.feng@canonical.com/ Link: https://bugzilla.kernel.org/show_bug.cgi?id=216295 Reviewed-by: Mika Westerberg Signed-off-by: Kai-Heng Feng --- v3: - No change. v2: - Only disable AER IRQ. - No more check on PME IRQ#. - Use helper. drivers/pci/pcie/aer.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 1420e1f27105..9c07fdbeb52d 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -1356,6 +1356,26 @@ static int aer_probe(struct pcie_device *dev) return 0; } +static int aer_suspend(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + aer_disable_irq(pdev); + + return 0; +} + +static int aer_resume(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + aer_enable_irq(pdev); + + return 0; +} + /** * aer_root_reset - reset Root Port hierarchy, RCEC, or RCiEP * @dev: pointer to Root Port, RCEC, or RCiEP @@ -1420,6 +1440,8 @@ static struct pcie_port_service_driver aerdriver = { .service = PCIE_PORT_SERVICE_AER, .probe = aer_probe, + .suspend = aer_suspend, + .resume = aer_resume, .remove = aer_remove, }; -- 2.34.1