From: Wu Fengguang <fengguang.wu@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andi Kleen <ak@linux.intel.com>, Ingo Molnar <mingo@elte.hu>,
Minchan Kim <minchan.kim@gmail.com>, Mel Gorman <mel@csn.ul.ie>,
"Wu, Fengguang" <fengguang.wu@intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Nick Piggin <npiggin@suse.de>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>,
Andi Kleen <andi@firstfloor.org>,
"riel@redhat.com" <riel@redhat.com>,
"chris.mason@oracle.com" <chris.mason@oracle.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: [PATCH 06/15] HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2
Date: Sat, 20 Jun 2009 11:16:14 +0800 [thread overview]
Message-ID: <20090620031625.449041353@intel.com> (raw)
In-Reply-To: 20090620031608.624240019@intel.com
[-- Attachment #1: x86-vmfault-poison --]
[-- Type: text/plain, Size: 2250 bytes --]
From: Andi Kleen <ak@linux.intel.com>
Add VM_FAULT_HWPOISON handling to the x86 page fault handler. This is
very similar to VM_FAULT_OOM, the only difference is that a different
si_code is passed to user space and the new addr_lsb field is initialized.
v2: Make the printk more verbose/unique
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
arch/x86/mm/fault.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
--- sound-2.6.orig/arch/x86/mm/fault.c
+++ sound-2.6/arch/x86/mm/fault.c
@@ -167,6 +167,7 @@ force_sig_info_fault(int si_signo, int s
info.si_errno = 0;
info.si_code = si_code;
info.si_addr = (void __user *)address;
+ info.si_addr_lsb = si_code == BUS_MCEERR_AR ? PAGE_SHIFT : 0;
force_sig_info(si_signo, &info, tsk);
}
@@ -798,10 +799,12 @@ out_of_memory(struct pt_regs *regs, unsi
}
static void
-do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address)
+do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
+ unsigned int fault)
{
struct task_struct *tsk = current;
struct mm_struct *mm = tsk->mm;
+ int code = BUS_ADRERR;
up_read(&mm->mmap_sem);
@@ -817,7 +820,15 @@ do_sigbus(struct pt_regs *regs, unsigned
tsk->thread.error_code = error_code;
tsk->thread.trap_no = 14;
- force_sig_info_fault(SIGBUS, BUS_ADRERR, address, tsk);
+#ifdef CONFIG_MEMORY_FAILURE
+ if (fault & VM_FAULT_HWPOISON) {
+ printk(KERN_ERR
+ "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
+ tsk->comm, tsk->pid, address);
+ code = BUS_MCEERR_AR;
+ }
+#endif
+ force_sig_info_fault(SIGBUS, code, address, tsk);
}
static noinline void
@@ -827,8 +838,8 @@ mm_fault_error(struct pt_regs *regs, uns
if (fault & VM_FAULT_OOM) {
out_of_memory(regs, error_code, address);
} else {
- if (fault & VM_FAULT_SIGBUS)
- do_sigbus(regs, error_code, address);
+ if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON))
+ do_sigbus(regs, error_code, address, fault);
else
BUG();
}
--
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-06-20 3:19 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-20 3:16 [PATCH 00/15] HWPOISON: Intro (v6) Wu Fengguang
2009-06-20 3:16 ` [PATCH 01/15] HWPOISON: Add page flag for poisoned pages Wu Fengguang
2009-06-20 3:16 ` [PATCH 02/15] HWPOISON: Export some rmap vma locking to outside world Wu Fengguang
2009-06-20 3:16 ` [PATCH 03/15] HWPOISON: Add support for poison swap entries v2 Wu Fengguang
2009-06-20 3:16 ` [PATCH 04/15] HWPOISON: Add new SIGBUS error codes for hardware poison signals Wu Fengguang
2009-06-20 3:16 ` [PATCH 05/15] HWPOISON: Add basic support for poisoned pages in fault handler v3 Wu Fengguang
2009-06-20 3:16 ` Wu Fengguang [this message]
2009-06-20 3:16 ` [PATCH 07/15] HWPOISON: define VM_FAULT_HWPOISON to 0 when feature is disabled Wu Fengguang
2009-06-20 3:16 ` [PATCH 08/15] HWPOISON: Use bitmask/action code for try_to_unmap behaviour Wu Fengguang
2009-06-20 3:16 ` [PATCH 09/15] HWPOISON: Handle hardware poisoned pages in try_to_unmap Wu Fengguang
2009-06-20 3:16 ` [PATCH 10/15] HWPOISON: check and isolate corrupted free pages v3 Wu Fengguang
2009-06-20 3:16 ` [PATCH 11/15] HWPOISON: The high level memory error handler in the VM v8 Wu Fengguang
2009-06-21 8:57 ` Andi Kleen
2009-06-22 9:02 ` Wu Fengguang
2009-06-22 9:37 ` Wu Fengguang
2009-06-24 9:17 ` Hidehiro Kawai
2009-06-20 3:16 ` [PATCH 12/15] HWPOISON: per process early kill option prctl(PR_MEMORY_FAILURE_EARLY_KILL) Wu Fengguang
2009-06-21 8:52 ` Andi Kleen
2009-06-22 9:27 ` Wu Fengguang
2009-06-20 3:16 ` [PATCH 13/15] HWPOISON: Add madvise() based injector for hardware poisoned pages v3 Wu Fengguang
2009-06-20 3:16 ` [PATCH 14/15] HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs Wu Fengguang
2009-06-20 3:16 ` [PATCH 15/15] HWPOISON: FOR TESTING: Enable memory failure code unconditionally Wu Fengguang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090620031625.449041353@intel.com \
--to=fengguang.wu@intel.com \
--cc=a.p.zijlstra@chello.nl \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=chris.mason@oracle.com \
--cc=hpa@zytor.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=minchan.kim@gmail.com \
--cc=mingo@elte.hu \
--cc=npiggin@suse.de \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).