You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.7 KiB

From 56913e2f2a5a6ddf8ab684c8d528e9ef1d55cfba Mon Sep 17 00:00:00 2001
From: Seiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Date: Tue, 26 May 2015 11:59:39 -0300
Subject: [PATCH 10/13] rasdaemon: make sure the error is valid before handling
ranks
Fix "rank" handling according to the Bit 63 description in Intel SDM Vol.3C
Table 16-23, that says "... Use this information only after there is valid
first error info indicated by bit 62".
Also fix invalid comparisons of unsigned variables "rank0" and "rank1".
Signed-off-by: Seiichi Ikarashi <s.ikarashi@jp.fujitsu.com>
Signed-off-by: Aristeu Rozanski <aris@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
---
mce-intel-haswell.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/mce-intel-haswell.c b/mce-intel-haswell.c
index 3ac12f2..0a817bf 100644
--- a/mce-intel-haswell.c
+++ b/mce-intel-haswell.c
@@ -174,22 +174,20 @@ void hsw_decode_model(struct ras_events *ras, struct mce_event *e)
mce_snprintf(e->mc_location, "memory_channel=%d", chan);
- if (EXTRACT(e->misc, 62, 62))
+ if (EXTRACT(e->misc, 62, 62)) {
rank0 = EXTRACT(e->misc, 46, 50);
-
- if (EXTRACT(e->misc, 63, 63))
- rank1 = EXTRACT(e->misc, 51, 55);
+ if (EXTRACT(e->misc, 63, 63))
+ rank1 = EXTRACT(e->misc, 51, 55);
+ }
/*
* FIXME: The conversion from rank to dimm requires to parse the
* DMI tables and call failrank2dimm().
*/
- if (rank0 >= 0 && rank1 >= 0)
+ if (rank0 != -1 && rank1 != -1)
mce_snprintf(e->mc_location, "ranks=%d and %d",
rank0, rank1);
- else if (rank0 >= 0)
+ else if (rank0 != -1)
mce_snprintf(e->mc_location, "rank=%d", rank0);
- else
- mce_snprintf(e->mc_location, "rank=%d", rank1);
}
--
1.8.3.1