1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
From 11bfbb446116c8313728157148a6bb15625031e8 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck@intel.com>
Date: Tue, 30 Aug 2016 09:37:02 -0700
Subject: [PATCH] Add Kabylake client support
CPU models 0x8E and 0x9E denote kabylake client processor
Upstream-Status: Backport [A little modification on context]
https://github.com/andikleen/mcelog/commit/11bfbb446116c8313728157148a6bb15625031e8
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
---
intel.c | 5 ++++-
intel.h | 3 ++-
mcelog.c | 4 +++-
mcelog.h | 1 +
4 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/intel.c b/intel.c
index f4ef9f6..33a99a8 100644
--- a/intel.c
+++ b/intel.c
@@ -35,7 +35,8 @@ void intel_cpu_init(enum cputype cpu)
cpu == CPU_IVY_BRIDGE || cpu == CPU_IVY_BRIDGE_EPEX ||
cpu == CPU_HASWELL || cpu == CPU_HASWELL_EPEX || cpu == CPU_BROADWELL ||
cpu == CPU_BROADWELL_DE || cpu == CPU_BROADWELL_EPEX ||
- cpu == CPU_KNIGHTS_LANDING || cpu == CPU_SKYLAKE || cpu == CPU_SKYLAKE_XEON)
+ cpu == CPU_KNIGHTS_LANDING || cpu == CPU_SKYLAKE || cpu == CPU_SKYLAKE_XEON ||
+ cpu == CPU_KABYLAKE)
memory_error_support = 1;
}
@@ -90,6 +91,8 @@ enum cputype select_intel_cputype(int family, int model)
return CPU_SKYLAKE;
else if (model == 0x55)
return CPU_SKYLAKE_XEON;
+ else if (model == 0x8E || model == 0x9E)
+ return CPU_KABYLAKE;
if (model > 0x1a) {
Eprintf("Family 6 Model %u CPU: only decoding architectural errors\n",
model);
diff --git a/intel.h b/intel.h
index d22895b..c231925 100644
--- a/intel.h
+++ b/intel.h
@@ -26,5 +26,6 @@ extern int memory_error_support;
case CPU_ATOM: \
case CPU_KNIGHTS_LANDING: \
case CPU_SKYLAKE: \
- case CPU_SKYLAKE_XEON
+ case CPU_SKYLAKE_XEON: \
+ case CPU_KABYLAKE
diff --git a/mcelog.c b/mcelog.c
index 1d79fa1..7214a0d 100644
--- a/mcelog.c
+++ b/mcelog.c
@@ -238,6 +238,7 @@ static char *cputype_name[] = {
[CPU_ATOM] = "ATOM",
[CPU_SKYLAKE] = "Skylake",
[CPU_SKYLAKE_XEON] = "Skylake server",
+ [CPU_KABYLAKE] = "Kabylake",
};
static struct config_choice cpu_choices[] = {
@@ -287,6 +288,7 @@ static struct config_choice cpu_choices[] = {
{ "atom", CPU_ATOM },
{ "skylake", CPU_SKYLAKE },
{ "skylake_server", CPU_SKYLAKE_XEON },
+ { "kabylake", CPU_KABYLAKE },
{ NULL }
};
@@ -451,7 +453,7 @@ static void dump_mce(struct mce *m, unsigned recordlen)
cputype != CPU_HASWELL_EPEX && cputype != CPU_BROADWELL &&
cputype != CPU_BROADWELL_DE && cputype != CPU_BROADWELL_EPEX &&
cputype != CPU_KNIGHTS_LANDING && cputype != CPU_SKYLAKE &&
- cputype != CPU_SKYLAKE_XEON)
+ cputype != CPU_SKYLAKE_XEON && cputype != CPU_KABYLAKE)
resolveaddr(m->addr);
if (!ascii_mode && ismemerr && (m->status & MCI_STATUS_ADDRV)) {
diskdb_resolve_addr(m->addr);
diff --git a/mcelog.h b/mcelog.h
index abc8bc9..254b3a0 100644
--- a/mcelog.h
+++ b/mcelog.h
@@ -130,6 +130,7 @@ enum cputype {
CPU_ATOM,
CPU_SKYLAKE,
CPU_SKYLAKE_XEON,
+ CPU_KABYLAKE,
};
enum option_ranges {
|