[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <lsq.1549201508.708051508@decadent.org.uk>
Date: Sun, 03 Feb 2019 14:45:08 +0100
From: Ben Hutchings <ben@...adent.org.uk>
To: linux-kernel@...r.kernel.org, stable@...r.kernel.org
CC: akpm@...ux-foundation.org, Denis Kirjanov <kda@...ux-powerpc.org>,
"Tony Luck" <tony.luck@...el.com>,
"linux-edac" <linux-edac@...r.kernel.org>,
"Mauro Carvalho Chehab" <mchehab@...nel.org>,
"Borislav Petkov" <bp@...e.de>,
"Aristeu Rozanski" <aris@...hat.com>,
"Qiuxu Zhuo" <qiuxu.zhuo@...el.com>
Subject: [PATCH 3.16 047/305] EDAC, {i7core,sb,skx}_edac: Fix uncorrected
error counting
3.16.63-rc1 review patch. If anyone has any objections, please let me know.
------------------
From: Tony Luck <tony.luck@...el.com>
commit 432de7fd7630c84ad24f1c2acd1e3bb4ce3741ca upstream.
The count of errors is picked up from bits 52:38 of the machine check
bank status register. But this is the count of *corrected* errors. If an
uncorrected error is being logged, the h/w sets this field to 0. Which
means that when edac_mc_handle_error() is called, the EDAC core will
carefully add zero to the appropriate uncorrected error counts.
Signed-off-by: Tony Luck <tony.luck@...el.com>
[ Massage commit message. ]
Signed-off-by: Borislav Petkov <bp@...e.de>
Cc: Aristeu Rozanski <aris@...hat.com>
Cc: Mauro Carvalho Chehab <mchehab@...nel.org>
Cc: Qiuxu Zhuo <qiuxu.zhuo@...el.com>
Cc: linux-edac <linux-edac@...r.kernel.org>
Link: http://lkml.kernel.org/r/20180928213934.19890-1-tony.luck@intel.com
[bwh: Backported to 3.16: Drop change in skx_edac.c]
Signed-off-by: Ben Hutchings <ben@...adent.org.uk>
---
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -1729,6 +1729,7 @@ static void i7core_mce_output_error(stru
u32 errnum = find_first_bit(&error, 32);
if (uncorrected_error) {
+ core_err_cnt = 1;
if (ripv)
tp_event = HW_EVENT_ERR_FATAL;
else
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -1659,6 +1659,7 @@ static void sbridge_mce_output_error(str
recoverable = GET_BITFIELD(m->status, 56, 56);
if (uncorrected_error) {
+ core_err_cnt = 1;
if (ripv) {
type = "FATAL";
tp_event = HW_EVENT_ERR_FATAL;
Powered by blists - more mailing lists