Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp5919854pxb; Thu, 27 Jan 2022 02:27:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJxKGO+paTgfq2vfVc7xEq1xV0qBQoRyJi0VTnAZs+OkrBvx9LBFRIBwbYxmXYKPcLI3FOfb X-Received: by 2002:a17:907:1c0e:: with SMTP id nc14mr2233298ejc.667.1643279220068; Thu, 27 Jan 2022 02:27:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643279220; cv=none; d=google.com; s=arc-20160816; b=b8EXoIKqTd8xwBvoEc5mzOLmQaxlGkIJwar7CVx/RYwuxkpObzJO6cXerKfBemejqS qjEqXum9Oi1q5QRCiHnc3wCKWmXgxkIuphFFUwIqhxMDQ38DJq6uP6kavEfD5rGIJqKA 9uJ6QX1NYXe7bzRFOcmXsQzQ3wvw/m0e0kS5S1NzVb2di/niFLLHP+eAlQ3LKW39y3zP S9vBPtqcT0r1NEuAxbCTwPOGyBZPj+4L+qVJK1CTNIphfISxzf9Gh+jQM9aVWtNVecpZ 03wyOkUyw2vemY/gZdRDK15Z776BngukxomoUHBKHKA/J6ja5t5a4M9DLuI8ONK5u+eG XoeQ== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=sWpBSBUjt4fjMhNwnvEmEn/DRq50Xif7PGU+Uxhifrg=; b=sAoeEe36ihK5rgaPHGs86gT7tGc5uFq2gqn/jXbdwL+BxqUH28F2AQVLue4AUJvmiA QLTnUVJEfIVX2VfPwNfWm6P4+dN0Bd8IDbQ65614zW9mMKfA7TsOxPKpUbE/SKC0HE61 S+eh6myew5c7W6C4xKJSquRV/QvJBWkJqt+lUmvdD3cHCSHpXx1NuwCfyV+qCR+c5SWf waW+Uv9Rmug09m0i1oulPmfbaw5woSsvAme3INV1sPMSIWxgZxEL86g5bg/r7rj7RRmL 9vQnHboyBro9Et6vKjPvboimuhAkCfRwhMUsFQxSFvfSlUWFsrqiKA47JSM8iUbCvYCS /pMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=YrYx55cj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id nc14si1205713ejc.529.2022.01.27.02.26.35; Thu, 27 Jan 2022 02:27:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=YrYx55cj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S233068AbiA0Cyb (ORCPT + 99 others); Wed, 26 Jan 2022 21:54:31 -0500 Received: from smtp-relay-canonical-0.canonical.com ([185.125.188.120]:39888 "EHLO smtp-relay-canonical-0.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229484AbiA0Cya (ORCPT ); Wed, 26 Jan 2022 21:54:30 -0500 Received: from HP-EliteBook-840-G7.. (1-171-96-243.dynamic-ip.hinet.net [1.171.96.243]) (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-0.canonical.com (Postfix) with ESMTPSA id 05F0640E01; Thu, 27 Jan 2022 02:54:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1643252069; bh=sWpBSBUjt4fjMhNwnvEmEn/DRq50Xif7PGU+Uxhifrg=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=YrYx55cj/JtoN3vXNr8MX1tcSJDJLHkw9C1yFzc/SCGZNsnAxTnHQ7NF1O6lR4WKI J5OmBuzjxj+KxE3DsYtMdva7dbppHT9qTATWFmM7BMnvPlQRY52JBZFX/0eFiATaMV 21i9hdgbHhWEbcXR557uMn9ryfIHluPENJlEh7n3EF8QdML8+w4+CBDRlmKs82fWgn g7kQDGfYh7phsToYNFfjrkx7UNSaPp5FtmqTurvJyCjQsL0Qm7YagFfr/3656xvH0W i4vvmzZFEV3IySjQ3edO+e5pwQC843vNCZVrQ5RVtNY2TPvRTvke0t+PeL027iR675 NnBVhdPrAkMLg== From: Kai-Heng Feng To: bhelgaas@google.com Cc: mika.westerberg@linux.intel.com, koba.ko@canonical.com, Kai-Heng Feng , Russell Currey , "Oliver O'Halloran" , Lalithambika Krishnakumar , Lu Baolu , Joerg Roedel , linuxppc-dev@lists.ozlabs.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] PCI/AER: Disable AER service when link is in L2/L3 ready, L2 and L3 state Date: Thu, 27 Jan 2022 10:54:17 +0800 Message-Id: <20220127025418.1989642-1-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.33.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 50310600ebda ("iommu/vt-d: Enable PCI ACS for platform opt in hint") enables ACS, and some platforms lose its NVMe after resume from S3: [ 50.947816] pcieport 0000:00:1b.0: DPC: containment event, status:0x1f01 source:0x0000 [ 50.947817] pcieport 0000:00:1b.0: DPC: unmasked uncorrectable error detected [ 50.947829] pcieport 0000:00:1b.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Receiver ID) [ 50.947830] pcieport 0000:00:1b.0: device [8086:06ac] error status/mask=00200000/00010000 [ 50.947831] pcieport 0000:00:1b.0: [21] ACSViol (First) [ 50.947841] pcieport 0000:00:1b.0: AER: broadcast error_detected message [ 50.947843] nvme nvme0: frozen state error detected, reset controller It happens right after ACS gets enabled during resume. There's another case, when Thunderbolt reaches D3cold: [ 30.100211] pcieport 0000:00:1d.0: AER: Uncorrected (Non-Fatal) error received: 0000:00:1d.0 [ 30.100251] pcieport 0000:00:1d.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID) [ 30.100256] pcieport 0000:00:1d.0: device [8086:7ab0] error status/mask=00100000/00004000 [ 30.100262] pcieport 0000:00:1d.0: [20] UnsupReq (First) [ 30.100267] pcieport 0000:00:1d.0: AER: TLP Header: 34000000 08000052 00000000 00000000 [ 30.100372] thunderbolt 0000:0a:00.0: AER: can't recover (no error_detected callback) [ 30.100401] xhci_hcd 0000:3e:00.0: AER: can't recover (no error_detected callback) [ 30.100427] pcieport 0000:00:1d.0: AER: device recovery failed So disable AER service to avoid the noises from turning power rails on/off when the device is in low power states (D3hot and D3cold), as PCIe spec "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). Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=209149 Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=215453 Fixes: 50310600ebda ("iommu/vt-d: Enable PCI ACS for platform opt in hint") Signed-off-by: Kai-Heng Feng --- v2: - Wording change. drivers/pci/pcie/aer.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 9fa1f97e5b270..e4e9d4a3098d7 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -1367,6 +1367,22 @@ 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); + + aer_disable_rootport(rpc); + return 0; +} + +static int aer_resume(struct pcie_device *dev) +{ + struct aer_rpc *rpc = get_service_data(dev); + + aer_enable_rootport(rpc); + return 0; +} + /** * aer_root_reset - reset Root Port hierarchy, RCEC, or RCiEP * @dev: pointer to Root Port, RCEC, or RCiEP @@ -1433,12 +1449,15 @@ static pci_ers_result_t aer_root_reset(struct pci_dev *dev) } static struct pcie_port_service_driver aerdriver = { - .name = "aer", - .port_type = PCIE_ANY_PORT, - .service = PCIE_PORT_SERVICE_AER, - - .probe = aer_probe, - .remove = aer_remove, + .name = "aer", + .port_type = PCIE_ANY_PORT, + .service = PCIE_PORT_SERVICE_AER, + .probe = aer_probe, + .suspend = aer_suspend, + .resume = aer_resume, + .runtime_suspend = aer_suspend, + .runtime_resume = aer_resume, + .remove = aer_remove, }; /** -- 2.33.1