summaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/mce.h
diff options
context:
space:
mode:
authorAndi Kleen <andi@firstfloor.org>2009-02-12 13:43:23 +0100
committerH. Peter Anvin <hpa@linux.intel.com>2009-02-19 14:52:20 -0800
commitb79109c3bbcf52cac5103979b283b9e5df4e796c (patch)
tree528da2232a2c7f013bde63b623bc11a205ce8773 /arch/x86/include/asm/mce.h
parentb5f2fa4ea00a179ac1c2ff342ceeee261dd75e53 (diff)
downloadblackbird-op-linux-b79109c3bbcf52cac5103979b283b9e5df4e796c.tar.gz
blackbird-op-linux-b79109c3bbcf52cac5103979b283b9e5df4e796c.zip
x86, mce: separate correct machine check poller and fatal exception handler
Impact: cleanup, performance enhancement The machine check poller is diverging more and more from the fatal exception handler. Instead of adding more special cases separate the code paths completely. The corrected poll path is actually quite simple, and this doesn't result in much code duplication. This makes both handlers much easier to read and results in cleaner code flow. The exception handler now only needs to care about uncorrected errors, which also simplifies the handling of multiple errors. The corrected poller also now always runs in standard interrupt context and does not need to do anything special to handle NMI context. Minor behaviour changes: - MCG status is now not cleared on polling. - Only the banks which had corrected errors get cleared on polling - The exception handler only clears banks with errors now v2: Forward port to new patch order. Add "uc" argument. Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/include/asm/mce.h')
-rw-r--r--arch/x86/include/asm/mce.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index 048b71d9387a..225cdb5d2bfc 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -112,6 +112,13 @@ void mce_log_therm_throt_event(__u64 status);
extern atomic_t mce_entry;
extern void do_machine_check(struct pt_regs *, long);
+
+enum mcp_flags {
+ MCP_TIMESTAMP = (1 << 0), /* log time stamp */
+ MCP_UC = (1 << 1), /* log uncorrected errors */
+};
+extern void machine_check_poll(enum mcp_flags flags);
+
extern int mce_notify_user(void);
#endif /* !CONFIG_X86_32 */
OpenPOWER on IntegriCloud