[patch] typo in i386 machine check code

Pete Wyckoff (pw@osc.edu)
Tue, 29 Jan 2002 13:25:32 -0500


Our old PIII Xeons are dying, as shown by more frequent panics
due to bad hardware:

kernel: CPU 3: Machine Check Exception: 0000000000000007
kernel: Bank 0: b678600022000800 at 3678600022000800

The part after the "at" is supposed to be the memory address which
was being accessed when the fault was detected. Instead the code
prints out the status field again (with the high bit removed for
no apparent reason).

Patch is against 2.5.2.

-- Pete

--- linux/arch/i386/kernel/bluesmoke.c.orig Tue Jan 29 12:04:46 2002
+++ linux/arch/i386/kernel/bluesmoke.c Tue Jan 29 12:04:48 2002
@@ -40,21 +40,21 @@ static void intel_machine_check(struct p
high&=~(1<<31);
if(high&(1<<27))
{
rdmsr(MSR_IA32_MC0_MISC+i*4, alow, ahigh);
printk("[%08x%08x]", alow, ahigh);
}
if(high&(1<<26))
{
rdmsr(MSR_IA32_MC0_ADDR+i*4, alow, ahigh);
printk(" at %08x%08x",
- high, low);
+ ahigh, alow);
}
printk("\n");
/* Clear it */
wrmsr(MSR_IA32_MC0_STATUS+i*4, 0UL, 0UL);
/* Serialize */
wmb();
}
}

if(recover&2)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/