Received: by 10.223.164.221 with SMTP id h29csp2480608wrb; Wed, 18 Oct 2017 01:06:32 -0700 (PDT) X-Google-Smtp-Source: AOwi7QC7iGpy8AyQ7MXcXj2GzOYBcUZTlZ3xN5r0RlIoIZOj6Y6zmL/VyO6V3XYUdLLRQ09sZH7B X-Received: by 10.101.89.2 with SMTP id f2mr13171285pgu.393.1508313992777; Wed, 18 Oct 2017 01:06:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508313992; cv=none; d=google.com; s=arc-20160816; b=0WINZiI1X5M1Q7lTqY6CGqKuTO5OWRdFoeyOXlb/x/T//VEZh+yVXK5eLUxpePK0dR Qqfg6owQ2sm6ZHjxYvSxymWT25oz6PEdLiQz/AA8F7qwnzHk7RPJxDgOJtzgo8gMjKWL y+53LsaEhvR8YIYcEClzaq5UqkPYM+W6E/9L4Bf9gBjQ/B0vVxP8zBApKmZFCGFLqf3v 0pEiQvQFQG9uiqtCqyC9MYeJiV9UkzT2guk0wGhAE1OhRzBI3p6vknEzHpNMormruUK0 IMSL0QKsawLYtY8qu+0pG0EbeY30+Pc5cfGmfD/6bo7xVpCWR4MW2RBKDV3BQe7u/i/0 v0+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dmarc-filter:dkim-signature:dkim-signature :arc-authentication-results; bh=yuZ+1KUycY2cHMzDhcG/eylUSmYnjwB9aesHvkemIyc=; b=FCbvEgWQhQPdEDLQvgceYNnHH6H6jo3WfcYjqHm/xJArwv4C1A6FJMDvytSeP3v/Ld E6JFANFHuZ/yUqathhvP9zIP6sRsc1UjABjeY29O5TIillCvTWg6bnQuflugtM9IwJpl 9LvC7mzct54VmxPJdHbAiKGtuEF0szunIGh/UtEX5CHAXWdkhrGsW6odP6teM3LC48CC Fk3jo4BB6VfMl9jGpo9uWDPDXrUnwciyUr4f4XcXeGANU6MCUFD7i8bGS337o6G5+pHS b+Vv+AHPL/sIaQfOyFp2adEOyr9GMnTwiQKNNnBubhUdzlaYT84L0LSGf2MucvxoQmuo 9B0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=asgQSgFx; dkim=pass header.i=@codeaurora.org header.s=default header.b=O8vLXJen; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k16si6719091pli.801.2017.10.18.01.06.18; Wed, 18 Oct 2017 01:06:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=asgQSgFx; dkim=pass header.i=@codeaurora.org header.s=default header.b=O8vLXJen; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936391AbdJQP2s (ORCPT + 99 others); Tue, 17 Oct 2017 11:28:48 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:55032 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933928AbdJQP2q (ORCPT ); Tue, 17 Oct 2017 11:28:46 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 46DEF607BD; Tue, 17 Oct 2017 15:28:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1508254126; bh=H5pzwV82nRzb5JY8d3FYhg9SiN7iU1L0Zkj4ZNYzga8=; h=From:To:Cc:Subject:Date:From; b=asgQSgFxBRXbG4Ilfpaso3FvBY1IgkSEfppyvvHs+xCqtd1XspaiugWL3Cc1Y4gsp tt8DheTLUROcBlXshNK3P0Q0YQDFToxCwiW4+CHjMN2qOwZ3CCN+ZCccRlwWchUQIA jJCpjpp1Q7ddc6r1tj9wOhSQk2aTCBK0B/We9cjU= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from tbaicar-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: tbaicar@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 8131D6025D; Tue, 17 Oct 2017 15:28:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1508254125; bh=H5pzwV82nRzb5JY8d3FYhg9SiN7iU1L0Zkj4ZNYzga8=; h=From:To:Cc:Subject:Date:From; b=O8vLXJen2/ahHxtvMNfVV0fRIrmAHDHNVJgpvHnnMfMAS2M5WGxgmHKuOAqtpEnFd 7Li7dGyR6CfK57oqvUVuLUquE+7Q8bHFVr37rbKwu/scIcpDMIwQW8M0NEgrXBMbbL 75kHUW8HKHQ7bQFrOcLpLF4nUyQp3BajaJR+nk0M= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 8131D6025D Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=tbaicar@codeaurora.org From: Tyler Baicar To: rjw@rjwysocki.net, lenb@kernel.org, will.deacon@arm.com, james.morse@arm.com, bp@suse.de, prarit@redhat.com, punit.agrawal@arm.com, shiju.jose@huawei.com, andriy.shevchenko@linux.intel.com, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Tyler Baicar Subject: [PATCH V2] acpi: apei: call into AER handling regardless of severity Date: Tue, 17 Oct 2017 09:28:35 -0600 Message-Id: <1508254115-27945-1-git-send-email-tbaicar@codeaurora.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the GHES code only calls into the AER driver for recoverable type errors. This is incorrect because errors of other severities do not get logged by the AER driver and do not get exposed to user space via the AER trace event. So, call into the AER driver for PCIe errors regardless of the severity. Signed-off-by: Tyler Baicar --- drivers/acpi/apei/ghes.c | 76 +++++++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 3c3a37b..d7801bc 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -458,6 +458,51 @@ static void ghes_handle_memory_failure(struct acpi_hest_generic_data *gdata, int #endif } +/* + * PCIe AER errors need to be sent to the AER driver for reporting and + * recovery. The GHES severities map to the following AER severities and + * require the following handling: + * + * GHES_SEV_CORRECTABLE -> AER_CORRECTABLE + * These need to be reported by the AER driver but no recovery is + * necessary. + * GHES_SEV_RECOVERABLE -> AER_NONFATAL + * GHES_SEV_RECOVERABLE && CPER_SEC_RESET -> AER_FATAL + * These both need to be reported and recovered from by the AER driver. + * GHES_SEV_PANIC does not make it to this handling since the kernel must + * panic. + */ +static void ghes_handle_aer(struct acpi_hest_generic_data *gdata) +{ +#ifdef CONFIG_ACPI_APEI_PCIEAER + struct cper_sec_pcie *pcie_err = acpi_hest_get_payload(gdata); + + if (pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID && + pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO) { + unsigned int devfn; + int aer_severity; + + devfn = PCI_DEVFN(pcie_err->device_id.device, + pcie_err->device_id.function); + aer_severity = cper_severity_to_aer(gdata->error_severity); + + /* + * If firmware reset the component to contain + * the error, we must reinitialize it before + * use, so treat it as a fatal AER error. + */ + if (gdata->flags & CPER_SEC_RESET) + aer_severity = AER_FATAL; + + aer_recover_queue(pcie_err->device_id.segment, + pcie_err->device_id.bus, + devfn, aer_severity, + (struct aer_capability_regs *) + pcie_err->aer_info); + } +#endif +} + static void ghes_do_proc(struct ghes *ghes, const struct acpi_hest_generic_status *estatus) { @@ -485,38 +530,9 @@ static void ghes_do_proc(struct ghes *ghes, arch_apei_report_mem_error(sev, mem_err); ghes_handle_memory_failure(gdata, sev); } -#ifdef CONFIG_ACPI_APEI_PCIEAER else if (guid_equal(sec_type, &CPER_SEC_PCIE)) { - struct cper_sec_pcie *pcie_err = acpi_hest_get_payload(gdata); - - if (sev == GHES_SEV_RECOVERABLE && - sec_sev == GHES_SEV_RECOVERABLE && - pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID && - pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO) { - unsigned int devfn; - int aer_severity; - - devfn = PCI_DEVFN(pcie_err->device_id.device, - pcie_err->device_id.function); - aer_severity = cper_severity_to_aer(gdata->error_severity); - - /* - * If firmware reset the component to contain - * the error, we must reinitialize it before - * use, so treat it as a fatal AER error. - */ - if (gdata->flags & CPER_SEC_RESET) - aer_severity = AER_FATAL; - - aer_recover_queue(pcie_err->device_id.segment, - pcie_err->device_id.bus, - devfn, aer_severity, - (struct aer_capability_regs *) - pcie_err->aer_info); - } - + ghes_handle_aer(gdata); } -#endif else if (guid_equal(sec_type, &CPER_SEC_PROC_ARM)) { struct cper_sec_proc_arm *err = acpi_hest_get_payload(gdata); -- Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. From 1583528943748316691@xxx Wed Nov 08 19:54:42 +0000 2017 X-GM-THRID: 1583528943748316691 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread