Received: by 2002:ab2:69cc:0:b0:1f4:be93:e15a with SMTP id n12csp1839092lqp; Mon, 15 Apr 2024 21:33:45 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUoI0y93ORN/9wylUi7qSavolM6t4FvcjNwkW1ujUv7AURdHZiZil/jhxm2zbaHJWLOHeJ9GX4rqRdR7SJfTVja+2eikmOc/Zwx4mTP5g== X-Google-Smtp-Source: AGHT+IFOw1ybMaAq4aOIQld5nebXQiVdemxGLo4mcxleal4yOSl8iQCfe4pYf4uNhSMeEmKHrWgH X-Received: by 2002:a05:6122:54a:b0:4ca:80c5:753d with SMTP id y10-20020a056122054a00b004ca80c5753dmr9028900vko.4.1713242025092; Mon, 15 Apr 2024 21:33:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713242025; cv=pass; d=google.com; s=arc-20160816; b=naAN5zE0PcQ6exw6+V9yXuXOhdJAawvD2WR37SvxFtCqIFP+uGSc5B13z33912lcge q46tjDI7PjgHD/92i/nqmZdUTSUy/IQWi0TPFq5J10eIOFaG92iKNgRvASaU43OOPzEH sbOYURsHYJFE0EBPP0q4f8h0gMRoGeQI57eAaZJYi0RXPNw/QkFpL6Ga2KwvU1q919bC 064hn122Y/wHkz3qp3CqYzQANJhgHISye+K0opmyRxOJBmrUvQdK5QWEmXLHyb+xGONH XHVXcg9OfMDJij2wtMS5G5eKYjNHuyZ2UGfJAMuHeirHCKiZS6HxKxEDWaqeLIYsf/Lh XQGw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=8+sIYCY+3Pc8+EMiPSoH0rMhXyMl45YAVFAQyJoev2g=; fh=GsNFNe7i3ds8tBh+Mib1DR6MufWZIox0N58L4m2xAhY=; b=BwcTAl41EQdaE6lzmpxPRVPyLRw9iUJpBXw109J6Vpp/mSPT4Yryr6JMPwrRf7QZv0 3JaGTj5q8aLLnloIUwSVCQPfiCCHqJKWRs8C3Cw0z4FRKPFElYtVdhSgsj7NUtD6Or5a wIECb1keYTlThuNcwq0KvlcHIQZo2UK2ckP0YbcTSfxFH97gTxd+hvtw9UsIbOivpovv VkMeqhUT2NPYekvqEilG1mtL8WmXgTLEMeL21jQVNFBEnBeT0mlukjwysBRJCATK19oK wZ20Dxasm4+/cbA4N3Rp6/YtQV29QdDvt96bCqgcnMGTKGL7A/1Ae9W4Z3pqmLfhyHtF eE8g==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=qVGiUamw; arc=pass (i=1 spf=pass spfdomain=canonical.com dkim=pass dkdomain=canonical.com dmarc=pass fromdomain=canonical.com); spf=pass (google.com: domain of linux-kernel+bounces-146228-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-146228-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id g4-20020ac85804000000b00436f84d0ac9si4642242qtg.34.2024.04.15.21.33.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 21:33:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-146228-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=qVGiUamw; arc=pass (i=1 spf=pass spfdomain=canonical.com dkim=pass dkdomain=canonical.com dmarc=pass fromdomain=canonical.com); spf=pass (google.com: domain of linux-kernel+bounces-146228-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-146228-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 9B5061C21001 for ; Tue, 16 Apr 2024 04:33:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CCBDC381DE; Tue, 16 Apr 2024 04:33:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="qVGiUamw" Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87DB01BC5C; Tue, 16 Apr 2024 04:33:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.121 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713242015; cv=none; b=azlnHtxddUHqbuE2uCpNJUMb8rDJEzVevglNkrlNpGfGa7lvYlsQaIO7EPfUPgBwis5GoK0op7PeH6Q674MGP9WbyylT+JwVJCrybV3xVHJ+gaQyUXkkCjlC5mdyQzc822dbAYSZnnRoPvXsEfvTJL/jGi8fg5e8Gk+JI+g/ZUc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713242015; c=relaxed/simple; bh=ET5pyKN9r4SlZzma8e0fiAbkahwzN7k33++Uo0oQh9Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qSj8gHRnAp2l6aRa9HicXpDYQEDzoBel8RjMyp4tjLoXUhLmMwKxvIVSbc50hYbuBwQRQJ8l45TGM89F5hasF8gpHBLZiahHPzowrue0GJ/eF5H8lXTDAyki0LoV14ErKh/yyK5ASCDNQ7ru0g23sXz8Gm1TgW7CvNzRdG/xV3M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=qVGiUamw; arc=none smtp.client-ip=185.125.188.121 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com 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 CC2303F176; Tue, 16 Apr 2024 04:33:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1713242010; bh=8+sIYCY+3Pc8+EMiPSoH0rMhXyMl45YAVFAQyJoev2g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qVGiUamwNeLPxTXVB3LP1mYoRsnNYsQ1gOKtJRu9KsiIsvc/vIJRIRV0mHEs9nHEG PSsdGGqYRl61oA0eHRN01lSn+kpSnNK6uRmHPG/tmWcMb+fe0xowJ6psXmykAm4rx0 /6Tp4HSTnzTFA3AwJi7xx5SpsQKiHLrTL0wSkD/iRhTik/IA2ccHqy6CMg/AOp8eX0 LUJLI6HwCQnnEIU51CKErEBXNLAu3sFOb2nOAAnqbXgQInsIer4c62wFsHZOXnBQAs DBHT5Aa1VmvYpP2KXaZaKgd9OTIh8EYFcEGvJ7hL8ZO87QM96JcJT6htSm6OkC8+rb HPJc8ngqqnAaQ== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mahesh@linux.ibm.com, oohall@gmail.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, bagasdotme@gmail.com, regressions@lists.linux.dev, linux-nvme@lists.infradead.org, kch@nvidia.com, hch@lst.de, gloriouseggroll@gmail.com, kbusch@kernel.org, sagi@grimberg.me, hare@suse.de, Kai-Heng Feng Subject: [PATCH v8 2/3] PCI/AER: Disable AER service on suspend Date: Tue, 16 Apr 2024 12:32:24 +0800 Message-Id: <20240416043225.1462548-2-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240416043225.1462548-1-kai.heng.feng@canonical.com> References: <20240416043225.1462548-1-kai.heng.feng@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When the power rail gets cut off, the hardware can create some electric noise on the link that triggers AER. If IRQ is shared between AER with PME, such AER noise will cause a spurious wakeup on system suspend. When the power rail gets back, the firmware of the device resets itself and can create unexpected behavior like sending PTM messages. For this case, the driver will always be too late to toggle off features should be disabled. As Per PCIe Base Spec 5.0, section 5.2, titled "Link State Power Management", TLP and DLLP transmission are disabled for a Link in L2/L3 Ready (D3hot), L2 (D3cold with aux power) and L3 (D3cold) states. So if the power will be turned off during suspend process, disable AER service and re-enable it during the resume process. This should not affect the basic functionality. Link: https://bugzilla.kernel.org/show_bug.cgi?id=209149 Link: https://bugzilla.kernel.org/show_bug.cgi?id=216295 Link: https://bugzilla.kernel.org/show_bug.cgi?id=218090 Signed-off-by: Kai-Heng Feng --- v8: - Add more bug reports. v7: - Wording - Disable AER completely (again) if power will be turned off v6: v5: - Wording. v4: v3: - No change. v2: - Only disable AER IRQ. - No more check on PME IRQ#. - Use helper. drivers/pci/pcie/aer.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index ac6293c24976..bea7818c2d1b 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -1497,6 +1498,28 @@ 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; + + if (pci_ancestor_pr3_present(pdev) || pm_suspend_via_firmware()) + aer_disable_rootport(rpc); + + return 0; +} + +static int aer_resume(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + struct pci_dev *pdev = rpc->rpd; + + if (pci_ancestor_pr3_present(pdev) || pm_resume_via_firmware()) + aer_enable_rootport(rpc); + + return 0; +} + /** * aer_root_reset - reset Root Port hierarchy, RCEC, or RCiEP * @dev: pointer to Root Port, RCEC, or RCiEP @@ -1561,6 +1584,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