mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
i386: eliminate unsupported CPUs' MCA handling code
Neither Intel P5 nor Winchip are supported by Xen (due to -march=i686 being passed to the compiler), so there is no point in having code for handling their (rudimentary) MCA capabilities. Signed-off-by: Jan Beulich <jbeulich@novell.com>
This commit is contained in:
1 parent
2e08ff6c7c
commit
0df83ebb36
5 files changed
-107
No files matched your search
@@ -6,5 +6,3 @@ obj-y += mctelem.o
|
||||
obj-y += mce.o
|
||||
obj-y += mce_intel.o
|
||||
obj-y += non-fatal.o
|
||||
obj-$(x86_32) += p5.o
|
||||
obj-$(x86_32) += winchip.o
|
||||
@@ -616,12 +616,6 @@ void mcheck_init(struct cpuinfo_x86 *c)
|
||||
|
||||
case X86_VENDOR_INTEL:
|
||||
switch (c->x86) {
|
||||
case 5:
|
||||
#ifndef CONFIG_X86_64
|
||||
inited = intel_p5_mcheck_init(c);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 6:
|
||||
case 15:
|
||||
inited = intel_mcheck_init(c);
|
||||
@@ -629,14 +623,6 @@ void mcheck_init(struct cpuinfo_x86 *c)
|
||||
}
|
||||
break;
|
||||
|
||||
#ifndef CONFIG_X86_64
|
||||
case X86_VENDOR_CENTAUR:
|
||||
if (c->x86==5) {
|
||||
inited = winchip_mcheck_init(c);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -17,8 +17,6 @@ int amd_k7_mcheck_init(struct cpuinfo_x86 *c);
|
||||
int amd_k8_mcheck_init(struct cpuinfo_x86 *c);
|
||||
int amd_f10_mcheck_init(struct cpuinfo_x86 *c);
|
||||
|
||||
int intel_p5_mcheck_init(struct cpuinfo_x86 *c);
|
||||
int winchip_mcheck_init(struct cpuinfo_x86 *c);
|
||||
int intel_mcheck_init(struct cpuinfo_x86 *c);
|
||||
|
||||
void intel_mcheck_timer(struct cpuinfo_x86 *c);
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* P5 specific Machine Check Exception Reporting
|
||||
* (C) Copyright 2002 Alan Cox <alan@redhat.com>
|
||||
*/
|
||||
|
||||
#include <xen/init.h>
|
||||
#include <xen/types.h>
|
||||
#include <xen/kernel.h>
|
||||
#include <xen/smp.h>
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/msr.h>
|
||||
|
||||
#include "mce.h"
|
||||
#include "x86_mca.h"
|
||||
|
||||
/* Machine check handler for Pentium class Intel */
|
||||
static void pentium_machine_check(struct cpu_user_regs * regs, long error_code)
|
||||
{
|
||||
u32 loaddr, hi, lotype;
|
||||
rdmsr(MSR_IA32_P5_MC_ADDR, loaddr, hi);
|
||||
rdmsr(MSR_IA32_P5_MC_TYPE, lotype, hi);
|
||||
printk(KERN_EMERG "CPU#%d: Machine Check Exception: 0x%8X (type 0x%8X).\n", smp_processor_id(), loaddr, lotype);
|
||||
if(lotype&(1<<5))
|
||||
printk(KERN_EMERG "CPU#%d: Possible thermal failure (CPU on fire ?).\n", smp_processor_id());
|
||||
add_taint(TAINT_MACHINE_CHECK);
|
||||
}
|
||||
|
||||
/* Set up machine check reporting for processors with Intel style MCE */
|
||||
int intel_p5_mcheck_init(struct cpuinfo_x86 *c)
|
||||
{
|
||||
u32 l, h;
|
||||
|
||||
/* Default P5 to off as its often misconnected */
|
||||
if(mce_disabled != -1)
|
||||
return 0;
|
||||
x86_mce_vector_register(pentium_machine_check);
|
||||
|
||||
/* Read registers before enabling */
|
||||
rdmsr(MSR_IA32_P5_MC_ADDR, l, h);
|
||||
rdmsr(MSR_IA32_P5_MC_TYPE, l, h);
|
||||
printk(KERN_INFO "Intel old style machine check architecture supported.\n");
|
||||
|
||||
/* Enable MCE */
|
||||
set_in_cr4(X86_CR4_MCE);
|
||||
printk(KERN_INFO "Intel old style machine check reporting enabled on CPU#%d.\n", smp_processor_id());
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* IDT Winchip specific Machine Check Exception Reporting
|
||||
* (C) Copyright 2002 Alan Cox <alan@redhat.com>
|
||||
*/
|
||||
|
||||
#include <xen/config.h>
|
||||
#include <xen/init.h>
|
||||
#include <xen/lib.h>
|
||||
#include <xen/types.h>
|
||||
#include <xen/kernel.h>
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/msr.h>
|
||||
|
||||
#include "mce.h"
|
||||
|
||||
/* Machine check handler for WinChip C6 */
|
||||
static void winchip_machine_check(struct cpu_user_regs * regs, long error_code)
|
||||
{
|
||||
printk(KERN_EMERG "CPU0: Machine Check Exception.\n");
|
||||
add_taint(TAINT_MACHINE_CHECK);
|
||||
}
|
||||
|
||||
/* Set up machine check reporting on the Winchip C6 series */
|
||||
int winchip_mcheck_init(struct cpuinfo_x86 *c)
|
||||
{
|
||||
u32 lo, hi;
|
||||
|
||||
wmb();
|
||||
x86_mce_vector_register(winchip_machine_check);
|
||||
rdmsr(MSR_IDT_FCR1, lo, hi);
|
||||
lo|= (1<<2); /* Enable EIERRINT (int 18 MCE) */
|
||||
lo&= ~(1<<4); /* Enable MCE */
|
||||
wrmsr(MSR_IDT_FCR1, lo, hi);
|
||||
set_in_cr4(X86_CR4_MCE);
|
||||
printk(KERN_INFO "Winchip machine check reporting enabled on CPU#0.\n");
|
||||
return (1);
|
||||
}
|
||||