aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Luc <piotr.luc@intel.com>2016-10-26 16:17:07 +0200
committerAndi Kleen <ak@linux.intel.com>2016-10-26 09:36:36 -0700
commit94d853b2ea818c5e31e61c089e87e5e19e7c5a17 (patch)
tree150467d959d51a6b76d7dc2122562e71f92e7df0
parentbac53fea3a271e0f8f8bf289d5a3de011110562a (diff)
downloadmcelog-94d853b2ea818c5e31e61c089e87e5e19e7c5a17.tar.gz
Add Knights Mill (KNM) CPUIDv144
Enable support for Knights Mill (KNM). The KNM is close enough to Knights Landing (KNL) and reuses its code. Signed-off-by: Piotr Luc <piotr.luc@intel.com> Signed-off-by: Andi Kleen <ak@linux.intel.com>
-rw-r--r--intel.c5
-rw-r--r--intel.h1
-rw-r--r--mcelog.c8
-rw-r--r--mcelog.h1
-rw-r--r--nehalem.c3
5 files changed, 13 insertions, 5 deletions
diff --git a/intel.c b/intel.c
index 011c854..20d2acd 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_KNIGHTS_MILL ||
+ cpu == CPU_SKYLAKE || cpu == CPU_SKYLAKE_XEON ||
cpu == CPU_KABYLAKE || cpu == CPU_DENVERTON)
memory_error_support = 1;
}
@@ -82,6 +83,8 @@ enum cputype select_intel_cputype(int family, int model)
return CPU_BROADWELL_DE;
else if (model == 0x57)
return CPU_KNIGHTS_LANDING;
+ else if (model == 0x85)
+ return CPU_KNIGHTS_MILL;
else if (model == 0x1c || model == 0x26 || model == 0x27 ||
model == 0x35 || model == 0x36 || model == 0x36 ||
model == 0x37 || model == 0x4a || model == 0x4c ||
diff --git a/intel.h b/intel.h
index e3ed48d..4d65490 100644
--- a/intel.h
+++ b/intel.h
@@ -25,6 +25,7 @@ extern int memory_error_support;
case CPU_BROADWELL_EPEX: \
case CPU_ATOM: \
case CPU_KNIGHTS_LANDING: \
+ case CPU_KNIGHTS_MILL: \
case CPU_SKYLAKE: \
case CPU_SKYLAKE_XEON: \
case CPU_KABYLAKE: \
diff --git a/mcelog.c b/mcelog.c
index 81e820d..96bebee 100644
--- a/mcelog.c
+++ b/mcelog.c
@@ -235,6 +235,7 @@ static char *cputype_name[] = {
[CPU_BROADWELL_DE] = "Intel Xeon (Broadwell) D family",
[CPU_BROADWELL_EPEX] = "Intel Xeon v4 (Broadwell) EP/EX",
[CPU_KNIGHTS_LANDING] = "Knights Landing",
+ [CPU_KNIGHTS_MILL] = "Knights Mill",
[CPU_ATOM] = "ATOM",
[CPU_SKYLAKE] = "Skylake",
[CPU_SKYLAKE_XEON] = "Skylake server",
@@ -283,6 +284,7 @@ static struct config_choice cpu_choices[] = {
{ "broadwell-ep", CPU_BROADWELL_EPEX },
{ "broadwell-ex", CPU_BROADWELL_EPEX },
{ "knightslanding", CPU_KNIGHTS_LANDING },
+ { "knightsmill", CPU_KNIGHTS_MILL },
{ "xeon-v2", CPU_IVY_BRIDGE_EPEX },
{ "xeon-v3", CPU_HASWELL_EPEX },
{ "xeon-v4", CPU_BROADWELL_EPEX },
@@ -454,9 +456,9 @@ static void dump_mce(struct mce *m, unsigned recordlen)
if (cputype != CPU_SANDY_BRIDGE_EP && cputype != CPU_IVY_BRIDGE_EPEX &&
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_KABYLAKE &&
- cputype != CPU_DENVERTON)
+ cputype != CPU_KNIGHTS_LANDING && cputype != CPU_KNIGHTS_MILL &&
+ cputype != CPU_SKYLAKE && cputype != CPU_SKYLAKE_XEON &&
+ cputype != CPU_KABYLAKE && cputype != CPU_DENVERTON)
resolveaddr(m->addr);
}
diff --git a/mcelog.h b/mcelog.h
index bd57fe6..6e175fe 100644
--- a/mcelog.h
+++ b/mcelog.h
@@ -127,6 +127,7 @@ enum cputype {
CPU_BROADWELL_DE,
CPU_BROADWELL_EPEX,
CPU_KNIGHTS_LANDING,
+ CPU_KNIGHTS_MILL,
CPU_ATOM,
CPU_SKYLAKE,
CPU_SKYLAKE_XEON,
diff --git a/nehalem.c b/nehalem.c
index fb3fdc2..0dcf7c0 100644
--- a/nehalem.c
+++ b/nehalem.c
@@ -129,7 +129,8 @@ void decode_memory_controller(u32 status, u8 bank)
if ((status & 0xf) == 0xf)
strcpy(channel, "unspecified");
else {
- if (cputype == CPU_KNIGHTS_LANDING) /* Fix for Knights Landing MIC */
+ /* Fix for Knights Landing/Mill MIC */
+ if (cputype == CPU_KNIGHTS_LANDING || cputype == CPU_KNIGHTS_MILL)
sprintf(channel, "%u", (status & 0xf) + 3 * (bank == 15));
else
sprintf(channel, "%u", status & 0xf);