From 0d76fdfc8a072dfc5dddad3b47979dd06ac4f801 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Tue, 7 Apr 2009 17:06:55 +0200 Subject: [PATCH] --- yaml --- r: 144479 b: refs/heads/master c: 5679af4c1625a1534a4321e1ecc3c48a1cf65eb8 h: refs/heads/master i: 144477: 54f319c9ab36be87c69badf7eee90c5f24c43ae0 144475: 57034eac5061fd76a811a48c97042b971a257be4 144471: cc1f7a4508b1af10ef140464b4c0001e3e56dff8 144463: 51d6644e18b1d2d875048de9d5b898fa5ebc415f 144447: 86a010c1a67d6c7e7a5351dcf98621be0f82244c v: v3 --- [refs] | 2 +- trunk/arch/x86/include/asm/mce.h | 1 + trunk/arch/x86/kernel/cpu/mcheck/mce_64.c | 9 +++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 9ab59a138bd1..14355fee2196 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6298c512bc1007c3ff5c9ce20e6996781651cc45 +refs/heads/master: 5679af4c1625a1534a4321e1ecc3c48a1cf65eb8 diff --git a/trunk/arch/x86/include/asm/mce.h b/trunk/arch/x86/include/asm/mce.h index 563933e06a35..4f8c199584e7 100644 --- a/trunk/arch/x86/include/asm/mce.h +++ b/trunk/arch/x86/include/asm/mce.h @@ -137,6 +137,7 @@ DECLARE_PER_CPU(mce_banks_t, mce_poll_banks); enum mcp_flags { MCP_TIMESTAMP = (1 << 0), /* log time stamp */ MCP_UC = (1 << 1), /* log uncorrected errors */ + MCP_DONTLOG = (1 << 2), /* only clear, don't log */ }; extern void machine_check_poll(enum mcp_flags flags, mce_banks_t *b); diff --git a/trunk/arch/x86/kernel/cpu/mcheck/mce_64.c b/trunk/arch/x86/kernel/cpu/mcheck/mce_64.c index 82614f1b923a..6fb0b359d2a5 100644 --- a/trunk/arch/x86/kernel/cpu/mcheck/mce_64.c +++ b/trunk/arch/x86/kernel/cpu/mcheck/mce_64.c @@ -239,9 +239,10 @@ void machine_check_poll(enum mcp_flags flags, mce_banks_t *b) * Don't get the IP here because it's unlikely to * have anything to do with the actual error location. */ - - mce_log(&m); - add_taint(TAINT_MACHINE_CHECK); + if (!(flags & MCP_DONTLOG)) { + mce_log(&m); + add_taint(TAINT_MACHINE_CHECK); + } /* * Clear state for this bank. @@ -585,7 +586,7 @@ static void mce_init(void *dummy) * Log the machine checks left over from the previous reset. */ bitmap_fill(all_banks, MAX_NR_BANKS); - machine_check_poll(MCP_UC, &all_banks); + machine_check_poll(MCP_UC|(!mce_bootlog ? MCP_DONTLOG : 0), &all_banks); set_in_cr4(X86_CR4_MCE);