Skip to content

Commit

Permalink
i386: Clear MCE flag on AMD K6
Browse files Browse the repository at this point in the history
It reports machine check capability in CPUID, but doesn't actually
implement all the necessary MSRs of the standard Intel machine
check architecture.

This fixes a boot failure on K6s recently introduced.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed May 21, 2007
1 parent 21124a8 commit c12ceb7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
4 changes: 4 additions & 0 deletions arch/i386/kernel/cpu/amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,10 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)

if (c->x86 == 0x10 && !force_mwait)
clear_bit(X86_FEATURE_MWAIT, c->x86_capability);

/* K6s reports MCEs but don't actually have all the MSRs */
if (c->x86 < 6)
clear_bit(X86_FEATURE_MCE, c->x86_capability);
}

static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 * c, unsigned int size)
Expand Down
6 changes: 3 additions & 3 deletions arch/i386/kernel/cpu/mcheck/k7.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,12 @@ void amd_mcheck_init(struct cpuinfo_x86 *c)
u32 l, h;
int i;

machine_check_vector = k7_machine_check;
wmb();

if (!cpu_has(c, X86_FEATURE_MCE))
return;

machine_check_vector = k7_machine_check;
wmb();

printk (KERN_INFO "Intel machine check architecture supported.\n");
rdmsr (MSR_IA32_MCG_CAP, l, h);
if (l & (1<<8)) /* Control register present ? */
Expand Down

0 comments on commit c12ceb7

Please sign in to comment.