diff options
author | Andi Kleen <andi@firstfloor.org> | 2008-10-21 16:45:22 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-10-22 07:19:01 -0400 |
commit | d2f6f7aeee890df445be29a60e34925ec15f620c (patch) | |
tree | 54b573ad93e7e9465df17531830c125e8079cebd /arch | |
parent | 2bfef69d9e8cc056aa4dbc13f2136747340b4515 (diff) |
MCE: Don't run 32bit machine checks with interrupts on
Running machine checks with interrupt on is a extremly bad idea. The machine
check handler only runs when the system is broken and needs to finish
as quickly as possible.
Remove the respective bogus post 2.6.27 regression and call
the machine check vector directly again.
This removes only code.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
[Cherry-picked from x86/mce]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 2 | ||||
-rw-r--r-- | arch/x86/kernel/traps.c | 8 |
2 files changed, 1 insertions, 9 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index c356423a6026..dd65143941a8 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -1024,7 +1024,7 @@ ENTRY(machine_check) | |||
1024 | RING0_INT_FRAME | 1024 | RING0_INT_FRAME |
1025 | pushl $0 | 1025 | pushl $0 |
1026 | CFI_ADJUST_CFA_OFFSET 4 | 1026 | CFI_ADJUST_CFA_OFFSET 4 |
1027 | pushl $do_machine_check | 1027 | pushl machine_check_vector |
1028 | CFI_ADJUST_CFA_OFFSET 4 | 1028 | CFI_ADJUST_CFA_OFFSET 4 |
1029 | jmp error_code | 1029 | jmp error_code |
1030 | CFI_ENDPROC | 1030 | CFI_ENDPROC |
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index e062974cce34..04d242ab0161 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -931,14 +931,6 @@ do_device_not_available(struct pt_regs *regs, long error) | |||
931 | } | 931 | } |
932 | 932 | ||
933 | #ifdef CONFIG_X86_32 | 933 | #ifdef CONFIG_X86_32 |
934 | #ifdef CONFIG_X86_MCE | ||
935 | dotraplinkage void __kprobes do_machine_check(struct pt_regs *regs, long error) | ||
936 | { | ||
937 | conditional_sti(regs); | ||
938 | machine_check_vector(regs, error); | ||
939 | } | ||
940 | #endif | ||
941 | |||
942 | dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code) | 934 | dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code) |
943 | { | 935 | { |
944 | siginfo_t info; | 936 | siginfo_t info; |