aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-01-11 16:46:54 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-11 22:05:03 -0500
commit0a9c3ee7692fa20670986bcf550950e88ab9b4cc (patch)
tree62721a6246e5b60a4a7ee779d82bf3b88a0896e6 /arch/x86_64
parent11a8e778c46ee76fc46b0a7fa9d455b5a8e3e19f (diff)
[PATCH] x86_64: Use safe_smp_processor_id in MCE handler
hard_smp_processor_id would return the local APIC id instead of the Linux processor id. On big systems they are often not identical. safe_smp_processor_id is just a wrapper around it that does the necessary conversions. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/kernel/mce.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c
index b8f28ebdce26..13a2eada6c95 100644
--- a/arch/x86_64/kernel/mce.c
+++ b/arch/x86_64/kernel/mce.c
@@ -24,6 +24,7 @@
24#include <asm/mce.h> 24#include <asm/mce.h>
25#include <asm/kdebug.h> 25#include <asm/kdebug.h>
26#include <asm/uaccess.h> 26#include <asm/uaccess.h>
27#include <asm/smp.h>
27 28
28#define MISC_MCELOG_MINOR 227 29#define MISC_MCELOG_MINOR 227
29#define NR_BANKS 6 30#define NR_BANKS 6
@@ -178,7 +179,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
178 return; 179 return;
179 180
180 memset(&m, 0, sizeof(struct mce)); 181 memset(&m, 0, sizeof(struct mce));
181 m.cpu = hard_smp_processor_id(); 182 m.cpu = safe_smp_processor_id();
182 rdmsrl(MSR_IA32_MCG_STATUS, m.mcgstatus); 183 rdmsrl(MSR_IA32_MCG_STATUS, m.mcgstatus);
183 if (!(m.mcgstatus & MCG_STATUS_RIPV)) 184 if (!(m.mcgstatus & MCG_STATUS_RIPV))
184 kill_it = 1; 185 kill_it = 1;