aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/mce.h2
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce.c15
2 files changed, 7 insertions, 10 deletions
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index 94aedaf6327f..c3c7ee701753 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -86,9 +86,7 @@ struct mce_log {
86 86
87#ifdef __KERNEL__ 87#ifdef __KERNEL__
88 88
89#ifdef CONFIG_X86_32
90extern int mce_disabled; 89extern int mce_disabled;
91#endif
92 90
93#include <asm/atomic.h> 91#include <asm/atomic.h>
94 92
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index d99318b470d8..6ab477060f56 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -49,14 +49,15 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
49/* Call the installed machine check handler for this CPU setup. */ 49/* Call the installed machine check handler for this CPU setup. */
50void (*machine_check_vector)(struct pt_regs *, long error_code) = 50void (*machine_check_vector)(struct pt_regs *, long error_code) =
51 unexpected_machine_check; 51 unexpected_machine_check;
52
53int mce_disabled;
54
52#ifdef CONFIG_X86_64 55#ifdef CONFIG_X86_64
53 56
54#define MISC_MCELOG_MINOR 227 57#define MISC_MCELOG_MINOR 227
55 58
56atomic_t mce_entry; 59atomic_t mce_entry;
57 60
58static int mce_dont_init;
59
60/* 61/*
61 * Tolerant levels: 62 * Tolerant levels:
62 * 0: always panic on uncorrected errors, log corrected errors 63 * 0: always panic on uncorrected errors, log corrected errors
@@ -194,7 +195,7 @@ static void mce_panic(char *msg, struct mce *backup, u64 start)
194 195
195int mce_available(struct cpuinfo_x86 *c) 196int mce_available(struct cpuinfo_x86 *c)
196{ 197{
197 if (mce_dont_init) 198 if (mce_disabled)
198 return 0; 199 return 0;
199 return cpu_has(c, X86_FEATURE_MCE) && cpu_has(c, X86_FEATURE_MCA); 200 return cpu_has(c, X86_FEATURE_MCE) && cpu_has(c, X86_FEATURE_MCA);
200} 201}
@@ -720,7 +721,7 @@ void __cpuinit mcheck_init(struct cpuinfo_x86 *c)
720 return; 721 return;
721 722
722 if (mce_cap_init() < 0) { 723 if (mce_cap_init() < 0) {
723 mce_dont_init = 1; 724 mce_disabled = 1;
724 return; 725 return;
725 } 726 }
726 mce_cpu_quirks(c); 727 mce_cpu_quirks(c);
@@ -911,7 +912,7 @@ static struct miscdevice mce_log_device = {
911 */ 912 */
912static int __init mcheck_disable(char *str) 913static int __init mcheck_disable(char *str)
913{ 914{
914 mce_dont_init = 1; 915 mce_disabled = 1;
915 return 1; 916 return 1;
916} 917}
917__setup("nomce", mcheck_disable); 918__setup("nomce", mcheck_disable);
@@ -925,7 +926,7 @@ __setup("nomce", mcheck_disable);
925static int __init mcheck_enable(char *str) 926static int __init mcheck_enable(char *str)
926{ 927{
927 if (!strcmp(str, "off")) 928 if (!strcmp(str, "off"))
928 mce_dont_init = 1; 929 mce_disabled = 1;
929 else if (!strcmp(str, "bootlog") || !strcmp(str, "nobootlog")) 930 else if (!strcmp(str, "bootlog") || !strcmp(str, "nobootlog"))
930 mce_bootlog = (str[0] == 'b'); 931 mce_bootlog = (str[0] == 'b');
931 else if (isdigit(str[0])) 932 else if (isdigit(str[0]))
@@ -1292,8 +1293,6 @@ device_initcall(mce_init_device);
1292 1293
1293#else /* CONFIG_X86_32: */ 1294#else /* CONFIG_X86_32: */
1294 1295
1295int mce_disabled;
1296
1297int nr_mce_banks; 1296int nr_mce_banks;
1298EXPORT_SYMBOL_GPL(nr_mce_banks); /* non-fatal.o */ 1297EXPORT_SYMBOL_GPL(nr_mce_banks); /* non-fatal.o */
1299 1298