x86: MCE optimization and cleanups
cover x86: MCE optimization and cleanups
This patchset includes two patches.
1. Checks for the MCA fetures as early as possible and signedness fixup.
2. Minor coding style cleanup.
PATCH 1/2 x86: MCE optimization/refactoring
MCG_CAP never reports a negative count of available error-reporting banks. Therefore, make nr_mce_banks unsigned.
Check for MCE feature bit as early as possible and clean up the extra _MCE checks in the various cpu init type functions per request from Thomas Gleixner.
Signed-off-by Christoph Egger <[email protected]>
Signed-off-by Joerg Roedel <[email protected]>
--- arch/x86/kernel/cpu/mcheck/k7.c | 6 +----- arch/x86/kernel/cpu/mcheck/mce.c | 12 ++++++++++-- arch/x86/kernel/cpu/mcheck/mce.h | 2 +- arch/x86/kernel/cpu/mcheck/p5.c | 4 ---- arch/x86/kernel/cpu/mcheck/p6.c | 4 ---- 5 files changed, 12 insertions(+), 16 deletions(-)
arch/x86/kernel/cpu/mcheck/k7.c +1 -5
@@ -72,13 +72,9 @@ void amd_mcheck_init(struct cpuinfo_x86 *c)u32 l, h;int i; -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 ? */ wrmsr (MSR_IA32_MCG_CTL ,0xffffffff ,0xffffffff );
@@ -97,6 +93,6 @@ void amd_mcheck_init(struct cpuinfo_x86 *c) }set_in_cr4 (X86_CR4_MCE ); -printk (KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n" , +printk (KERN_INFO "CPU%d: AMD K7 machine check reporting enabled.\n" ,smp_processor_id ()); }
arch/x86/kernel/cpu/mcheck/mce.c +10 -2
@@ -17,7 +17,7 @@#include "mce.h" int mce_disabled =0 ; -int nr_mce_banks; +unsigned int nr_mce_banks;EXPORT_SYMBOL_GPL (nr_mce_banks);/* non-fatal.o */
@@ -33,8 +33,16 @@ void fastcall (*machine_check_vector)(struct pt_regs *, long error_code) = unexp/* This has to be run for each processor */ void mcheck_init (struct cpuinfo_x86 *c) { -if (mce_disabled==1 ) +if (mce_disabled ==1 ) { +printk (KERN_INFO "MCE support disabled by bootparam\n" );return ; + } + +if (!cpu_has (c,X86_FEATURE_MCE )) { +printk (KERN_INFO "CPU%i: No machine check support available\n" , +smp_processor_id ()); +return ; + }switch (c->x86_vendor) {case X86_VENDOR_AMD :
arch/x86/kernel/cpu/mcheck/mce.h +1 -1
@@ -10,5 +10,5 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c);/* Call the installed machine check handler for this CPU setup. */ extern fastcall void (*machine_check_vector)(struct pt_regs *, long error_code); -extern int nr_mce_banks; +extern unsigned int nr_mce_banks;
arch/x86/kernel/cpu/mcheck/p5.c +0 -4
@@ -32,10 +32,6 @@ void intel_p5_mcheck_init(struct cpuinfo_x86 *c) {u32 l, h; -/*Check for MCE support */ -if ( !cpu_has (c,X86_FEATURE_MCE ) ) -return ; -/* Default P5 to off as its often misconnected */ if (mce_disabled !=-1 )return ;
arch/x86/kernel/cpu/mcheck/p6.c +0 -4
@@ -84,10 +84,6 @@ void intel_p6_mcheck_init(struct cpuinfo_x86 *c)u32 l, h;int i; -/* Check for MCE support */ -if (!cpu_has (c,X86_FEATURE_MCE )) -return ; -/* Check for PPro style MCA */ if (!cpu_has (c,X86_FEATURE_MCA ))return ;
Signature · 1 line
1.5.2.5
PATCH 2/2 x86: mce minor indent cleanup
In reply to Joerg Roedelremove one indent level
Signed-off-by Christoph Egger <[email protected]>
Signed-off-by Joerg Roedel <[email protected]>
--- arch/x86/kernel/cpu/mcheck/mce.c | 40 +++++++++++++++++++------------------- 1 files changed, 20 insertions(+), 20 deletions(-)
arch/x86/kernel/cpu/mcheck/mce.c +20 -20
@@ -45,26 +45,26 @@ void mcheck_init(struct cpuinfo_x86 *c) }switch (c->x86_vendor) { -case X86_VENDOR_AMD : -amd_mcheck_init (c); -break ; - -case X86_VENDOR_INTEL : -if (c->x86==5 ) -intel_p5_mcheck_init (c); -if (c->x86==6 ) -intel_p6_mcheck_init (c); -if (c->x86==15 ) -intel_p4_mcheck_init (c); -break ; - -case X86_VENDOR_CENTAUR : -if (c->x86==5 ) -winchip_mcheck_init (c); -break ; - -default : -break ; +case X86_VENDOR_AMD : +amd_mcheck_init (c); +break ; + +case X86_VENDOR_INTEL : +if (c->x86==5 ) +intel_p5_mcheck_init (c); +if (c->x86==6 ) +intel_p6_mcheck_init (c); +if (c->x86==15 ) +intel_p4_mcheck_init (c); +break ; + +case X86_VENDOR_CENTAUR : +if (c->x86==5 ) +winchip_mcheck_init (c); +break ; + +default : +break ; } }
Signature · 1 line
1.5.2.5