From patchwork Fri Nov 17 18:22:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Helgaas X-Patchwork-Id: 10063151 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2CEC86023A for ; Fri, 17 Nov 2017 18:23:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1BD232AAF2 for ; Fri, 17 Nov 2017 18:23:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0CB9D2AAA8; Fri, 17 Nov 2017 18:23:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0628A2A9BA for ; Fri, 17 Nov 2017 18:23:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752108AbdKQSXF (ORCPT ); Fri, 17 Nov 2017 13:23:05 -0500 Received: from mail.kernel.org ([198.145.29.99]:46118 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751760AbdKQSXA (ORCPT ); Fri, 17 Nov 2017 13:23:00 -0500 Received: from localhost (unknown [69.71.4.159]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 20523218B2; Fri, 17 Nov 2017 18:22:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 20523218B2 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=helgaas@kernel.org Date: Fri, 17 Nov 2017 12:22:56 -0600 From: Bjorn Helgaas To: Tyler Baicar Cc: bhelgaas@google.com, jonathan.derrick@intel.com, keith.busch@intel.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] PCI/AER: don't call recovery process for correctable errors Message-ID: <20171117182256.GA16907@bhelgaas-glaptop.roam.corp.google.com> References: <1503940184-29423-1-git-send-email-tbaicar@codeaurora.org> <20171002231903.GE5407@bhelgaas-glaptop.roam.corp.google.com> <86882a99-ef54-a71b-3e97-8ecc46d8d14b@codeaurora.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <86882a99-ef54-a71b-3e97-8ecc46d8d14b@codeaurora.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Wed, Nov 15, 2017 at 09:46:42AM -0500, Tyler Baicar wrote: > On 10/2/2017 7:19 PM, Bjorn Helgaas wrote: > >On Mon, Aug 28, 2017 at 11:09:44AM -0600, Tyler Baicar wrote: > >>Correctable errors do not need any software intervention, so > >>avoid calling into the software recovery process for correctable > >>errors. > >> > >>Signed-off-by: Tyler Baicar > >>--- > >> drivers/pci/pcie/aer/aerdrv_core.c | 3 ++- > >> 1 file changed, 2 insertions(+), 1 deletion(-) > >> > >>diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c > >>index b1303b3..4765c11 100644 > >>--- a/drivers/pci/pcie/aer/aerdrv_core.c > >>+++ b/drivers/pci/pcie/aer/aerdrv_core.c > >>@@ -626,7 +626,8 @@ static void aer_recover_work_func(struct work_struct *work) > >> continue; > >> } > >> cper_print_aer(pdev, entry.severity, entry.regs); > >>- do_recovery(pdev, entry.severity); > >>+ if (entry.severity != AER_CORRECTABLE) > >>+ do_recovery(pdev, entry.severity); > >I think this is fine, and it mirrors what is done in > >handle_error_source(). > > > Hello, > > Will this patch be pulled into 4.15? Sorry, I didn't get to this in time for v4.15, but I put it on pci/aer for v4.16. I expanded the changelog to note that this means we won't call the driver's callbacks or emit the "recovery successful" message for correctable errors from APEI, and that this matches what we already do for the non-APEI path. Bjorn commit 72761170e6d5519c91136fd6cc80805a74ef9cfd Author: Tyler Baicar Date: Mon Aug 28 11:09:44 2017 -0600 PCI/AER: Skip recovery callbacks for correctable errors from ACPI APEI PCIe correctable errors are corrected by hardware. Software may log them, but no other software intervention is required. There are two paths to enter the AER recovery code: (1) the native path where Linux fields the AER interrupt and reads the AER registers directly, and (2) the ACPI path where firmware reads the AER registers and hands them off to Linux via the ACPI APEI path. The AER do_recovery() function calls driver error reporting callbacks (error_detected(), mmio_enabled(), resume(), etc), attempts recovery (for fatal errors), and logs a "AER: Device recovery successful" message. Since there's nothing to recover for correctable errors, the native path already skips do_recovery(), so it doesn't call the driver callbacks and or emit the message. Make the APEI path do the same. Signed-off-by: Tyler Baicar [bhelgaas: changelog] Signed-off-by: Bjorn Helgaas diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index 744805232155..3e354f224422 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c @@ -633,7 +633,8 @@ static void aer_recover_work_func(struct work_struct *work) continue; } cper_print_aer(pdev, entry.severity, entry.regs); - do_recovery(pdev, entry.severity); + if (entry.severity != AER_CORRECTABLE) + do_recovery(pdev, entry.severity); pci_dev_put(pdev); } }