diff options
author | Ingo Molnar <mingo@kernel.org> | 2012-07-11 16:37:48 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-07-11 16:37:48 -0400 |
commit | bb65a764de59b76323e0b72abbd9fc31401a53fa (patch) | |
tree | 38646e0b3fd8143737270aa1ea5dadf7d9762a65 /arch/x86/kernel/cpu | |
parent | 92254d31444aad272155f7963e65910c402703dd (diff) | |
parent | 6751ed65dc6642af64f7b8a440a75563c8aab7ae (diff) |
Merge branch 'mce-ripvfix' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras into x86/mce
Merge memory fault handling fix from Tony Luck.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel/cpu')
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index da27c5d2168a..c46ed494f002 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -1186,6 +1186,7 @@ void mce_notify_process(void) | |||
1186 | { | 1186 | { |
1187 | unsigned long pfn; | 1187 | unsigned long pfn; |
1188 | struct mce_info *mi = mce_find_info(); | 1188 | struct mce_info *mi = mce_find_info(); |
1189 | int flags = MF_ACTION_REQUIRED; | ||
1189 | 1190 | ||
1190 | if (!mi) | 1191 | if (!mi) |
1191 | mce_panic("Lost physical address for unconsumed uncorrectable error", NULL, NULL); | 1192 | mce_panic("Lost physical address for unconsumed uncorrectable error", NULL, NULL); |
@@ -1200,8 +1201,9 @@ void mce_notify_process(void) | |||
1200 | * doomed. We still need to mark the page as poisoned and alert any | 1201 | * doomed. We still need to mark the page as poisoned and alert any |
1201 | * other users of the page. | 1202 | * other users of the page. |
1202 | */ | 1203 | */ |
1203 | if (memory_failure(pfn, MCE_VECTOR, MF_ACTION_REQUIRED) < 0 || | 1204 | if (!mi->restartable) |
1204 | mi->restartable == 0) { | 1205 | flags |= MF_MUST_KILL; |
1206 | if (memory_failure(pfn, MCE_VECTOR, flags) < 0) { | ||
1205 | pr_err("Memory error not recovered"); | 1207 | pr_err("Memory error not recovered"); |
1206 | force_sig(SIGBUS, current); | 1208 | force_sig(SIGBUS, current); |
1207 | } | 1209 | } |