<p>Dan Elkouby has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28443">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cpu/intel/model_206ax: detect number of MCE banks<br><br>My CPU (3770k) supports 9 MCE banks, but the code is hardcoded to reset<br>only 7. This causes Linux to spuriously log errors during boot and S3<br>resume.<br><br>Fix this by reading the real value from the right MSR.<br><br>Change-Id: Id05645009259fd77b4de49bde518361eeae46617<br>---<br>M src/cpu/intel/model_206ax/model_206ax.h<br>M src/cpu/intel/model_206ax/model_206ax_init.c<br>2 files changed, 6 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/43/28443/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/cpu/intel/model_206ax/model_206ax.h b/src/cpu/intel/model_206ax/model_206ax.h</span><br><span>index 7cb4069..98203b6 100644</span><br><span>--- a/src/cpu/intel/model_206ax/model_206ax.h</span><br><span>+++ b/src/cpu/intel/model_206ax/model_206ax.h</span><br><span>@@ -39,6 +39,7 @@</span><br><span> #define IA32_PACKAGE_THERM_INTERRUPT        0x1b2</span><br><span> #define MSR_LT_LOCK_MEMORY             0x2e7</span><br><span> #define IA32_MC0_STATUS                        0x401</span><br><span style="color: hsl(120, 100%, 40%);">+#define IA32_MCG_CAP                     0x179</span><br><span> </span><br><span> #define MSR_PIC_MSG_CONTROL                0x2e</span><br><span> #define MSR_PLATFORM_INFO               0xce</span><br><span>diff --git a/src/cpu/intel/model_206ax/model_206ax_init.c b/src/cpu/intel/model_206ax/model_206ax_init.c</span><br><span>index 75631c1..3cc8d82 100644</span><br><span>--- a/src/cpu/intel/model_206ax/model_206ax_init.c</span><br><span>+++ b/src/cpu/intel/model_206ax/model_206ax_init.c</span><br><span>@@ -414,10 +414,14 @@</span><br><span> {</span><br><span>       msr_t msr;</span><br><span>   int i;</span><br><span style="color: hsl(120, 100%, 40%);">+        int num_banks;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      msr = rdmsr(IA32_MCG_CAP);</span><br><span style="color: hsl(120, 100%, 40%);">+    num_banks = msr.lo & 0xff;</span><br><span> </span><br><span>   msr.lo = msr.hi = 0;</span><br><span>         /* This should only be done on a cold boot */</span><br><span style="color: hsl(0, 100%, 40%);">-   for (i = 0; i < 7; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+    for (i = 0; i < num_banks; i++)</span><br><span>           wrmsr(IA32_MC0_STATUS + (i * 4), msr);</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28443">change 28443</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28443"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Id05645009259fd77b4de49bde518361eeae46617 </div>
<div style="display:none"> Gerrit-Change-Number: 28443 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Dan Elkouby <streetwalkermc@gmail.com> </div>