From patchwork Thu May 30 14:39:28 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Betty Dall X-Patchwork-Id: 2637101 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: X-Original-To: patchwork-linux-pci@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 379C5DF2A1 for ; Thu, 30 May 2013 14:47:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933053Ab3E3Oq2 (ORCPT ); Thu, 30 May 2013 10:46:28 -0400 Received: from g5t0006.atlanta.hp.com ([15.192.0.43]:44266 "EHLO g5t0006.atlanta.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933196Ab3E3OqR (ORCPT ); Thu, 30 May 2013 10:46:17 -0400 Received: from g5t0030.atlanta.hp.com (g5t0030.atlanta.hp.com [16.228.8.142]) by g5t0006.atlanta.hp.com (Postfix) with ESMTP id EE22DC67C; Thu, 30 May 2013 14:46:16 +0000 (UTC) Received: from linux1.fc.hp.com (linux1.fc.hp.com [16.71.12.34]) by g5t0030.atlanta.hp.com (Postfix) with ESMTP id 525221462F; Thu, 30 May 2013 14:46:16 +0000 (UTC) From: Betty Dall To: rjw@sisk.pl, bhelgaas@google.com Cc: ying.huang@intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Betty Dall Subject: [PATCH v2 2/3] ACPI/APEI: Force fatal AER severity when bus has been reset Date: Thu, 30 May 2013 08:39:28 -0600 Message-Id: <1369924769-17183-3-git-send-email-betty.dall@hp.com> X-Mailer: git-send-email 1.7.7.6 In-Reply-To: <1369924769-17183-1-git-send-email-betty.dall@hp.com> References: <1369924769-17183-1-git-send-email-betty.dall@hp.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org The CPER error record has a reset bit that indicates that the platform has reset the bus. The reset bit can be set for any severity error including recoverable. From the AER code path's perspective, any error is fatal if the bus has been reset. This patch upgrades the severity of the AER recovery to AER_FATAL whenever the CPER error record indicates that the bus has been reset. Changes since v1: Fixed a typo in comment. Signed-off-by: Betty Dall --- drivers/acpi/apei/ghes.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index d668a8a..1c67d5a 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -451,7 +451,26 @@ static void ghes_do_proc(struct ghes *ghes, int aer_severity; devfn = PCI_DEVFN(pcie_err->device_id.device, pcie_err->device_id.function); - aer_severity = cper_severity_to_aer(sev); + /* + * Some Firmware First implementations + * put the device in SBR to contain + * the error. This is indicated by the + * CPER Section Descriptor Flags reset + * bit which means the component must + * be re-initialized or re-enabled + * prior to use. Promoting the AER + * serverity to FATAL will cause the + * AER code to link_reset and allow + * drivers to reprogram their cards. + */ + if (gdata->flags & CPER_SEC_RESET) + aer_severity = cper_severity_to_aer( + CPER_SEV_FATAL); + else + aer_severity = + cper_severity_to_aer(sev); + + aer_recover_queue(pcie_err->device_id.segment, pcie_err->device_id.bus, devfn, aer_severity);