forked from Minki/linux
[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>
This commit is contained in:
parent
11a8e778c4
commit
0a9c3ee769
@ -24,6 +24,7 @@
|
|||||||
#include <asm/mce.h>
|
#include <asm/mce.h>
|
||||||
#include <asm/kdebug.h>
|
#include <asm/kdebug.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
#include <asm/smp.h>
|
||||||
|
|
||||||
#define MISC_MCELOG_MINOR 227
|
#define MISC_MCELOG_MINOR 227
|
||||||
#define NR_BANKS 6
|
#define NR_BANKS 6
|
||||||
@ -178,7 +179,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
memset(&m, 0, sizeof(struct mce));
|
memset(&m, 0, sizeof(struct mce));
|
||||||
m.cpu = hard_smp_processor_id();
|
m.cpu = safe_smp_processor_id();
|
||||||
rdmsrl(MSR_IA32_MCG_STATUS, m.mcgstatus);
|
rdmsrl(MSR_IA32_MCG_STATUS, m.mcgstatus);
|
||||||
if (!(m.mcgstatus & MCG_STATUS_RIPV))
|
if (!(m.mcgstatus & MCG_STATUS_RIPV))
|
||||||
kill_it = 1;
|
kill_it = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user