diff options
author | Andi Kleen <ak@linux.intel.com> | 2009-04-29 13:31:00 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-05-28 12:24:14 -0400 |
commit | ea149b36c7f511d17dd89fee734cb09778a91fa0 (patch) | |
tree | 04466a9b92dc5ce01c2ab8661165e3564d99f5c1 /arch/x86/include/asm/mce.h | |
parent | 5f8c1a54cab6f449fe04d42d0661bc796fa4e73e (diff) |
x86, mce: add basic error injection infrastructure
Allow user programs to write mce records into /dev/mcelog. When they do
that a fake machine check is triggered to test the machine check code.
This uses the MCE MSR wrappers added earlier.
The implementation is straight forward. There is a struct mce record
per CPU and the MCE MSR accesses get data from there if there is valid
data injected there. This allows to test the machine check code
relatively realistically because only the lowest layer of hardware
access is intercepted.
The test suite and injector are available at
git://git.kernel.org/pub/scm/utils/cpu/mce/mce-test.git
git://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/include/asm/mce.h')
-rw-r--r-- | arch/x86/include/asm/mce.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index c3c7ee70175..e7d2372301e 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h | |||
@@ -141,6 +141,9 @@ extern void machine_check_poll(enum mcp_flags flags, mce_banks_t *b); | |||
141 | 141 | ||
142 | extern int mce_notify_user(void); | 142 | extern int mce_notify_user(void); |
143 | 143 | ||
144 | DECLARE_PER_CPU(struct mce, injectm); | ||
145 | extern struct file_operations mce_chrdev_ops; | ||
146 | |||
144 | #ifdef CONFIG_X86_MCE | 147 | #ifdef CONFIG_X86_MCE |
145 | extern void mcheck_init(struct cpuinfo_x86 *c); | 148 | extern void mcheck_init(struct cpuinfo_x86 *c); |
146 | #else | 149 | #else |