ia64/xen-unstable

changeset 19436:1f8e6aca0868

intel mce: Small fixes.

Signed-off-by: Frank van der Linden <Frank.Vanderlinden@Sun.COM>
author Keir Fraser <keir.fraser@citrix.com>
date Tue Mar 31 11:10:06 2009 +0100 (2009-03-31)
parents d5ddc782bc49
children f86ebd7f887a
files xen/arch/x86/cpu/mcheck/mce_intel.c
line diff
     1.1 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c	Mon Mar 30 16:48:26 2009 +0100
     1.2 +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c	Tue Mar 31 11:10:06 2009 +0100
     1.3 @@ -426,7 +426,7 @@ static void severity_scan(void)
     1.4       * recovered, we need to RESET for avoiding DOM0 LOG missing
     1.5       */
     1.6      for ( i = 0; i < nr_mce_banks; i++) {
     1.7 -        rdmsrl(MSR_IA32_MC0_STATUS + 4 * i , status);
     1.8 +        mca_rdmsrl(MSR_IA32_MC0_STATUS + 4 * i , status);
     1.9          if ( !(status & MCi_STATUS_VAL) )
    1.10              continue;
    1.11          /* MCE handler only handles UC error */
    1.12 @@ -434,7 +434,12 @@ static void severity_scan(void)
    1.13              continue;
    1.14          if ( !(status & MCi_STATUS_EN) )
    1.15              continue;
    1.16 -        if (status & MCi_STATUS_PCC)
    1.17 +        /*
    1.18 +         * If this was an injected error, keep going, since the
    1.19 +         * interposed value will be lost at reboot.
    1.20 +         */
    1.21 +        if (status & MCi_STATUS_PCC && intpose_lookup(smp_processor_id(),
    1.22 +          MSR_IA32_MC0_STATUS + 4 * i, NULL) == NULL)
    1.23              mc_panic("pcc = 1, cpu unable to continue\n");
    1.24      }
    1.25  
    1.26 @@ -519,8 +524,8 @@ static void intel_machine_check(struct c
    1.27  
    1.28      /* Pick one CPU to clear MCIP */
    1.29      if (!test_and_set_bool(mce_process_lock)) {
    1.30 -        rdmsrl(MSR_IA32_MCG_STATUS, gstatus);
    1.31 -        wrmsrl(MSR_IA32_MCG_STATUS, gstatus & ~MCG_STATUS_MCIP);
    1.32 +        mca_rdmsrl(MSR_IA32_MCG_STATUS, gstatus);
    1.33 +        mca_wrmsrl(MSR_IA32_MCG_STATUS, gstatus & ~MCG_STATUS_MCIP);
    1.34  
    1.35          if (worst >= 3) {
    1.36              printk(KERN_WARNING "worst=3 should have caused RESET\n");