Stefan Reinauer ([email protected]) just uploaded a new patch set to 
gerrit, which you can find at http://review.coreboot.org/2745

-gerrit

commit 2359210f1aa72b0597c4e9492767f3b39143a0df
Author: Aaron Durbin <[email protected]>
Date:   Sat Jan 12 01:07:28 2013 -0600

    haswell: Clear correct number of MCA banks
    
    The configure_mca() function was hard coding the number of
    banks the cpu supported. Query this dynamically so that it
    no longer clears only 7 banks.
    
    Change-Id: I33fce8fadc0facd1016b3295faaf3ae90e490a71
    Signed-off-by: Aaron Durbin <[email protected]>
---
 src/cpu/intel/haswell/haswell_init.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/cpu/intel/haswell/haswell_init.c 
b/src/cpu/intel/haswell/haswell_init.c
index 762b7e8..45c1a25 100644
--- a/src/cpu/intel/haswell/haswell_init.c
+++ b/src/cpu/intel/haswell/haswell_init.c
@@ -424,11 +424,17 @@ static void set_energy_perf_bias(u8 policy)
 static void configure_mca(void)
 {
        msr_t msr;
+       const unsigned int mcg_cap_msr = 0x179;
        int i;
+       int num_banks;
 
+       msr = rdmsr(mcg_cap_msr);
+       num_banks = msr.lo & 0xff;
        msr.lo = msr.hi = 0;
-       /* This should only be done on a cold boot */
-       for (i = 0; i < 7; i++)
+       /* TODO(adurbin): This should only be done on a cold boot. Also, some
+        * of these banks are core vs package scope. For now every CPU clears
+        * every bank. */
+       for (i = 0; i < num_banks; i++)
                wrmsr(IA32_MC0_STATUS + (i * 4), msr);
 }
 

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to