From patchwork Wed Feb 15 17:44:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tyler Baicar X-Patchwork-Id: 9574797 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 18D536045F for ; Wed, 15 Feb 2017 18:44:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0640528505 for ; Wed, 15 Feb 2017 18:44:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EE5B92850E; Wed, 15 Feb 2017 18:44:23 +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=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 92B9628505 for ; Wed, 15 Feb 2017 18:44:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=2cdsQhqBudAV7g12bnI46zhcjdt5oiN4kzxPgmkgwoo=; b=bhYTRinWrUCjGG/GXLRnuJDN7k luGKxS0Rz3F1q0A/UQ24KDjfcSZXDNyeBPlTrLaUJt2w+Una/BGTyXesQuwmnJysAVKtfHpyrT04Y KVPoVWwtsbFvKitUqDDhhNnsPn45gcL7knyo3gvIvXtJSb1h4/UvGMAPCS6gl4CFS48Tk+cVnJmvZ qSwf6C4QwDhJ8X2wOm9RQ9CJE7LWstHzorQN2RNmmSXGELCFVZf1CsmcNpYW7zc1Uz+3FWr4Uo2vA aE4HQVfH3N1CSJ5wGypmqTW8Fkq7exEo+oKYmo/veDVO2sUwcwwmjx7whBKZizx7B7Bc78ptmqdkr xILB63LQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1ce4Yx-0004u5-0U; Wed, 15 Feb 2017 18:44:23 +0000 Received: from merlin.infradead.org ([2001:4978:20e::2]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1ce4Ye-0004cI-R3 for linux-arm-kernel@bombadil.infradead.org; Wed, 15 Feb 2017 18:44:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=merlin.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ksl2hcGqf6Ea46FubMmCn2G/FQ/HW0cJQB/oHtNP//Q=; b=GVKb74cI5aHFnZ/GHAoVdRWPV WMLz837nysgkNhv8N6tkQlKCglnVbqn7ZIa9W9UHumOUpGVDk/hAKDUPS030lSk7mEujD6bHnWgIY N6ApUntyoHRKhj7pIi+qw1MknH1oLR0bJogHMcCJaEeuGTZuvfgfqQ2WeQ2BY35mShg3Su+bvOXDq G5zuMB4/LUJ1swce7y/61Ifu4m2xa8zROrLdtKVK2xZV+a/ezVPjqkgFXhZF08goYEvRwl3TPpGsr eHy34AlowttEbt3/ys1/Q9DMkJycPOZJqSXklZviRyFucISFaG65QkoG9P6mKB9FzHWFffnfaemhl i7BXmdN5w==; Received: from smtp.codeaurora.org ([198.145.29.96]) by merlin.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1ce3eY-0001LY-6L for linux-arm-kernel@lists.infradead.org; Wed, 15 Feb 2017 17:46:11 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 43FDE60F6D; Wed, 15 Feb 2017 17:45:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1487180745; bh=LRZ9glLybdHALD7lOKdiGJGJc0s5FIeO0ll5zmWR12M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JvIHCQm0Rth6/G+/MuLpJCh8y7RdV7SXeNuldnAXu1D5XpPWEfZxWC3u5OBYoGvLs pjFFtEpIHHPPD/LHJFSJQKddoLmY5Xh5UEW1Ac8W9GL1GsozHgMySIy8oH+Qr+sp00 jMff/5ZskyB7q10VMjNg5txXftcw1tuJfR12pTfA= Received: from tbaicar-lnx.qualcomm.com (unknown [129.46.14.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: tbaicar@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 378F460E77; Wed, 15 Feb 2017 17:45:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1487180725; bh=LRZ9glLybdHALD7lOKdiGJGJc0s5FIeO0ll5zmWR12M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CoLm4Q/Z5wkf0E0E+Y1PlTqMxNOxpmjv3AgBQBz3fdTujGtcMhEp1MB1S6/Re27AV O4QnII0mWqDrFZcmk7l7Ib7dziKT38wZLMXWJfuop3Z8fAYqr8XFgglfg4C1+QkYdL 3DBX821bpkz433VS8DahFqCXkSaY80PLBoK9UX0w= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 378F460E77 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: christoffer.dall@linaro.org, marc.zyngier@arm.com, pbonzini@redhat.com, rkrcmar@redhat.com, linux@armlinux.org.uk, catalin.marinas@arm.com, will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org, matt@codeblueprint.co.uk, robert.moore@intel.com, lv.zheng@intel.com, nkaje@codeaurora.org, zjzhang@codeaurora.org, mark.rutland@arm.com, james.morse@arm.com, akpm@linux-foundation.org, eun.taik.lee@samsung.com, sandeepa.s.prabhu@gmail.com, labbott@redhat.com, shijie.huang@arm.com, rruigrok@codeaurora.org, paul.gortmaker@windriver.com, tn@semihalf.com, fu.wei@linaro.org, rostedt@goodmis.org, bristot@redhat.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-efi@vger.kernel.org, devel@acpica.org, Suzuki.Poulose@arm.com, punit.agrawal@arm.com, astone@redhat.com, harba@codeaurora.org, hanjun.guo@linaro.org, john.garry@huawei.com, shiju.jose@huawei.com Subject: [PATCH V9 06/10] acpi: apei: panic OS with fatal error status block Date: Wed, 15 Feb 2017 10:44:48 -0700 Message-Id: <1487180692-16732-7-git-send-email-tbaicar@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1487180692-16732-1-git-send-email-tbaicar@codeaurora.org> References: <1487180692-16732-1-git-send-email-tbaicar@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170215_124606_404888_E113030B X-CRM114-Status: GOOD ( 16.42 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tyler Baicar MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: "Jonathan (Zhixiong) Zhang" Even if an error status block's severity is fatal, the kernel does not honor the severity level and panic. With the firmware first model, the platform could inform the OS about a fatal hardware error through the non-NMI GHES notification type. The OS should panic when a hardware error record is received with this severity. Call panic() after CPER data in error status block is printed if severity is fatal, before each error section is handled. Signed-off-by: Jonathan (Zhixiong) Zhang Signed-off-by: Tyler Baicar Reviewed-by: James Morse --- drivers/acpi/apei/ghes.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 87045dc..9f105ce 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -133,6 +133,8 @@ static struct ghes_estatus_cache *ghes_estatus_caches[GHES_ESTATUS_CACHES_SIZE]; static atomic_t ghes_estatus_cache_alloced; +static int ghes_panic_timeout __read_mostly = 30; + static int ghes_ioremap_init(void) { ghes_ioremap_area = __get_vm_area(PAGE_SIZE * GHES_IOREMAP_PAGES, @@ -688,6 +690,13 @@ static int ghes_ack_error(struct acpi_hest_generic_v2 *generic_v2) return rc; } +static void __ghes_call_panic(void) +{ + if (panic_timeout == 0) + panic_timeout = ghes_panic_timeout; + panic("Fatal hardware error!"); +} + static int ghes_proc(struct ghes *ghes) { int rc; @@ -695,6 +704,10 @@ static int ghes_proc(struct ghes *ghes) rc = ghes_read_estatus(ghes, 0); if (rc) goto out; + if (ghes_severity(ghes->estatus->error_severity) >= GHES_SEV_PANIC) { + __ghes_print_estatus(KERN_EMERG, ghes->generic, ghes->estatus); + __ghes_call_panic(); + } if (!ghes_estatus_cached(ghes->estatus)) { if (ghes_print_estatus(NULL, ghes->generic, ghes->estatus)) ghes_estatus_cache_add(ghes->generic, ghes->estatus); @@ -831,8 +844,6 @@ static inline void ghes_sea_remove(struct ghes *ghes) static LIST_HEAD(ghes_nmi); -static int ghes_panic_timeout __read_mostly = 30; - static void ghes_proc_in_irq(struct irq_work *irq_work) { struct llist_node *llnode, *next; @@ -925,9 +936,7 @@ static void __ghes_panic(struct ghes *ghes) __ghes_print_estatus(KERN_EMERG, ghes->generic, ghes->estatus); /* reboot to log the error! */ - if (panic_timeout == 0) - panic_timeout = ghes_panic_timeout; - panic("Fatal hardware error!"); + __ghes_call_panic(); } static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)