Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp120026rwr; Wed, 19 Apr 2023 19:01:58 -0700 (PDT) X-Google-Smtp-Source: AKy350b2JFQF4xf7I/asYp1ICXdF2xVoJLqqlN9FwyODTfINuO0I9YwZtCG0XCMgOWs9jWyQM8RB X-Received: by 2002:a17:903:228a:b0:1a6:3799:ec36 with SMTP id b10-20020a170903228a00b001a63799ec36mr4732108plh.33.1681956117994; Wed, 19 Apr 2023 19:01:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681956117; cv=none; d=google.com; s=arc-20160816; b=w361TpvH2rGT85lqz4xJllUD2bR7p4MSrL2kIXYa1yAfcwpN8/PYiNUKCsZPgKkU2m QetuWBLVZFE8ZqQjcG60lwRMGfQJugmRD9oNete5/k2IWuSdNyTd3cbPD2XWy87BZtYT mMCTkLxZ/Cg75novxiltpHJLZxeiZsvxxyTZS6XjfbHD7idRK2F0nTZHderI8nc6FLUr qC4VCB9zmsU2wbOGdSO6sQjdRFPTkEkMR6OH1veE9CSkrjxLG4GzQDmeYurWZZcdAMxC PXoH74+YeXbAtQ1OsjFUd77tLvYj0K5J01xuPM3iKJ7mhbd25x+hJkRahV1lShpFBM9F 4Urg== 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=GvxobRKlf1r2LOJfuxc46vcCZjfhma6sFjPHV1PVN6U=; b=e0Bs+m0UR4D6ToUs66FUe28ZRNSK4RG+QMiiIg0yDk0ZxpGOmnL5zfPUxJuDTqHJi3 syiVQbPZwcYVOfkhGMhOk3YPxqx+3v0B/OqtuMvTPvUr/xx2OJeFggUFaSdDblB6KL9q Ys6ECFUDnFPWyEQvuKBmled5C7q09xDvwTSBUZATr8A7/0KChlk3Ydu/gdCb+Y54hdHv 4HxBk/j1S+7Lz3OG/k8K+P/OyXYoB502hXnBfk60nZpiS/zFA7VIVNurIk091/wG23Ey R4BVi5BsOQPa4CqwSayasnUDfzM4kCwB9kmAWIpd1X8JPrfkpn6sIIOWfpTwPeLFytAt 5XDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=sX7r+Fnp; 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 iz17-20020a170902ef9100b001a6e9d170c1si316091plb.511.2023.04.19.19.01.23; Wed, 19 Apr 2023 19:01:57 -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=sX7r+Fnp; 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 S230385AbjDTB7c (ORCPT + 99 others); Wed, 19 Apr 2023 21:59:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230081AbjDTB73 (ORCPT ); Wed, 19 Apr 2023 21:59:29 -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 0AD6C3A90; Wed, 19 Apr 2023 18:59:28 -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 0B89342A36; Thu, 20 Apr 2023 01:59:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1681955966; bh=GvxobRKlf1r2LOJfuxc46vcCZjfhma6sFjPHV1PVN6U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sX7r+FnpAZXsSCx+1VAfxDUdCmhTZTfKO7rwZ74TZYTIxDapUUdxufd1gpNOpkJxo /0h8kZ7w5yIcr5sf+ryx2IZVyRroMoj53kKOxclAjWuq9yhz1QhNSHBHym/bAOgRyC I+qGjo/8NZkPfMY8rtHXGckoMa29gnEaLGzsowqr086N68LszOSODjaRo+SLoUiZGj +34op4nwdw6irkISngwcyYAiCsmoLzzpmbGPzQqBMz4WbqMlxzqcD+g5yahb8K0IRQ EwrhO3del6Wo1xl55st8SNV2x0Zz/1ipCmhMAMFlzYTTdBQnVO5gY72BeEApwsBeGG YcZ4UXZ5dHkUg== 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 v2 3/4] PCI/AER: Disable AER interrupt on suspend Date: Thu, 20 Apr 2023 09:58:29 +0800 Message-Id: <20230420015830.309845-3-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230420015830.309845-1-kai.heng.feng@canonical.com> References: <20230420015830.309845-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 Signed-off-by: Kai-Heng Feng --- 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