|
|
a6d7b5 |
From: Prarit Bhargava <prarit@redhat.com>
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
Subject: mcelog: Add decoding for Optane DC persistent memory mode
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
commit d1f37aae14d476af6260af01904aed0f2e942542
|
|
|
a6d7b5 |
Author: Tony Luck <tony.luck@intel.com>
|
|
|
a6d7b5 |
Date: Tue Feb 5 10:10:38 2019 -0800
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
mcelog: Add decoding for Optane DC persistent memory mode
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
Recognise the new MCACOD for errors in DDR memory in use as a cache
|
|
|
a6d7b5 |
for Optane DC persistent memory.
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
In binary the new code looks similar to the old memory controller
|
|
|
a6d7b5 |
compound error code. The only difference is that bit 9 is set in
|
|
|
a6d7b5 |
addition to bit 7:
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
000F 0010 1MMM CCCC
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
Signed-off-by: Tony Luck <tony.luck@intel.com>
|
|
|
a6d7b5 |
Signed-off-by: Andi Kleen <ak@linux.intel.com>
|
|
|
a6d7b5 |
|
|
|
a6d7b5 |
diff --git a/p4.c b/p4.c
|
|
|
a6d7b5 |
index adb4c5eab976edf2c99efddd65e6abfcfeb97da2..8e1ec2fe435f0883c5146fa55e8e703713236d0a 100644
|
|
|
a6d7b5 |
--- a/p4.c
|
|
|
a6d7b5 |
+++ b/p4.c
|
|
|
a6d7b5 |
@@ -199,6 +199,9 @@ static int decode_mca(u64 status, u64 misc, u64 track, int cpu, int *ismemerr, i
|
|
|
a6d7b5 |
CACHE_RRRR_SHIFT));
|
|
|
a6d7b5 |
if (track == 2)
|
|
|
a6d7b5 |
run_yellow_trigger(cpu, typenum, levelnum, type, level,socket);
|
|
|
a6d7b5 |
+ } else if (test_prefix(9, mca) && EXTRACT(mca, 7, 8) == 1) {
|
|
|
a6d7b5 |
+ Wprintf("Memory as cache: ");
|
|
|
a6d7b5 |
+ decode_memory_controller(mca, bank);
|
|
|
a6d7b5 |
} else if (test_prefix(10, mca)) {
|
|
|
a6d7b5 |
if (mca == 0x400)
|
|
|
a6d7b5 |
Wprintf("Internal Timer error\n");
|