diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2009-10-07 07:20:38 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-10-12 06:24:45 -0400 |
commit | fb2531953fd8855abdcf458459020fd382c5deca (patch) | |
tree | 2967323398aba0369bff02225f0e9d4d00db0c35 /arch/x86/include/asm/mce.h | |
parent | d93a8f829fe1d2f3002f2c6ddb553d12db420412 (diff) |
mce, edac: Use an atomic notifier for MCEs decoding
Add an atomic notifier which ensures proper locking when conveying
MCE info to EDAC for decoding. The actual notifier call overrides a
default, negative priority notifier.
Note: make sure we register the default decoder only once since
mcheck_init() runs on each CPU.
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
LKML-Reference: <20091003065752.GA8935@liondog.tnic>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/mce.h')
-rw-r--r-- | arch/x86/include/asm/mce.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index f1363b72364f..227a72df6441 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h | |||
@@ -108,6 +108,8 @@ struct mce_log { | |||
108 | #define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9) | 108 | #define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9) |
109 | #define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0) | 109 | #define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0) |
110 | 110 | ||
111 | extern struct atomic_notifier_head x86_mce_decoder_chain; | ||
112 | |||
111 | #ifdef __KERNEL__ | 113 | #ifdef __KERNEL__ |
112 | 114 | ||
113 | #include <linux/percpu.h> | 115 | #include <linux/percpu.h> |
@@ -213,6 +215,5 @@ extern void (*threshold_cpu_callback)(unsigned long action, unsigned int cpu); | |||
213 | void intel_init_thermal(struct cpuinfo_x86 *c); | 215 | void intel_init_thermal(struct cpuinfo_x86 *c); |
214 | 216 | ||
215 | void mce_log_therm_throt_event(__u64 status); | 217 | void mce_log_therm_throt_event(__u64 status); |
216 | |||
217 | #endif /* __KERNEL__ */ | 218 | #endif /* __KERNEL__ */ |
218 | #endif /* _ASM_X86_MCE_H */ | 219 | #endif /* _ASM_X86_MCE_H */ |