From: Andi Kleen <andi@firstfloor.org>
To: linux-kernel@vger.kernel.org
Subject: [PATCH] [1/21] HWPOISON: Add page flag for poisoned pages
Date: Fri, 11 Sep 2009 20:48:30 +0200 (CEST) [thread overview]
Message-ID: <20090911184830.0C3D3B1757@basil.firstfloor.org> (raw)
In-Reply-To: <20090911848.933193846@firstfloor.org>
Hardware poisoned pages need special handling in the VM and shouldn't be
touched again. This requires a new page flag. Define it here.
The page flags wars seem to be over, so it shouldn't be a problem
to get a new one.
v2: Add TestSetHWPoison (suggested by Johannes Weiner)
Acked-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
include/linux/page-flags.h | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
Index: linux/include/linux/page-flags.h
===================================================================
--- linux.orig/include/linux/page-flags.h
+++ linux/include/linux/page-flags.h
@@ -51,6 +51,9 @@
* PG_buddy is set to indicate that the page is free and in the buddy system
* (see mm/page_alloc.c).
*
+ * PG_hwpoison indicates that a page got corrupted in hardware and contains
+ * data with incorrect ECC bits that triggered a machine check. Accessing is
+ * not safe since it may cause another machine check. Don't touch!
*/
/*
@@ -102,6 +105,9 @@ enum pageflags {
#ifdef CONFIG_IA64_UNCACHED_ALLOCATOR
PG_uncached, /* Page has been mapped as uncached */
#endif
+#ifdef CONFIG_MEMORY_FAILURE
+ PG_hwpoison, /* hardware poisoned page. Don't touch */
+#endif
__NR_PAGEFLAGS,
/* Filesystems */
@@ -263,6 +269,15 @@ PAGEFLAG(Uncached, uncached)
PAGEFLAG_FALSE(Uncached)
#endif
+#ifdef CONFIG_MEMORY_FAILURE
+PAGEFLAG(HWPoison, hwpoison)
+TESTSETFLAG(HWPoison, hwpoison)
+#define __PG_HWPOISON (1UL << PG_hwpoison)
+#else
+PAGEFLAG_FALSE(HWPoison)
+#define __PG_HWPOISON 0
+#endif
+
static inline int PageUptodate(struct page *page)
{
int ret = test_bit(PG_uptodate, &(page)->flags);
@@ -387,7 +402,7 @@ static inline void __ClearPageTail(struc
1 << PG_private | 1 << PG_private_2 | \
1 << PG_buddy | 1 << PG_writeback | 1 << PG_reserved | \
1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \
- 1 << PG_unevictable | __PG_MLOCKED)
+ 1 << PG_unevictable | __PG_MLOCKED | __PG_HWPOISON)
/*
* Flags checked when a page is prepped for return by the page allocator.
next prev parent reply other threads:[~2009-09-11 18:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-11 18:48 [PATCH] [0/21] HWPOISON: Intro Andi Kleen
2009-09-11 18:48 ` Andi Kleen [this message]
2009-09-11 18:48 ` [PATCH] [2/21] HWPOISON: Export some rmap vma locking to outside world Andi Kleen
2009-09-11 18:48 ` [PATCH] [3/21] HWPOISON: Add support for poison swap entries v2 Andi Kleen
2009-09-11 18:48 ` [PATCH] [4/21] HWPOISON: Add new SIGBUS error codes for hardware poison signals Andi Kleen
2009-09-11 18:48 ` [PATCH] [5/21] HWPOISON: Add basic support for poisoned pages in fault handler v3 Andi Kleen
2009-09-11 18:48 ` [PATCH] [6/21] HWPOISON: Add various poison checks in mm/memory.c v2 Andi Kleen
2009-09-11 18:48 ` [PATCH] [7/21] HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2 Andi Kleen
2009-09-11 18:48 ` [PATCH] [8/21] HWPOISON: Use bitmask/action code for try_to_unmap behaviour Andi Kleen
2009-09-11 18:48 ` [PATCH] [9/21] HWPOISON: Handle hardware poisoned pages in try_to_unmap Andi Kleen
2009-09-11 18:48 ` [PATCH] [10/21] HWPOISON: check and isolate corrupted free pages v2 Andi Kleen
2009-09-11 18:48 ` [PATCH] [11/21] HWPOISON: Refactor truncate to allow direct truncating of page v2 Andi Kleen
2009-09-11 18:48 ` [PATCH] [12/21] HWPOISON: Add invalidate_inode_page Andi Kleen
2009-09-11 18:48 ` [PATCH] [13/21] HWPOISON: Define a new error_remove_page address space op for async truncation Andi Kleen
2009-09-11 18:48 ` [PATCH] [14/21] HWPOISON: shmem: call set_page_dirty() with locked page Andi Kleen
2009-09-11 20:24 ` Peter Zijlstra
2009-09-11 21:56 ` Andi Kleen
2009-09-11 18:48 ` [PATCH] [15/21] HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process Andi Kleen
2009-09-11 18:48 ` [PATCH] [16/21] HWPOISON: The high level memory error handler in the VM v7 Andi Kleen
2009-09-11 19:25 ` Daniel Walker
2009-09-11 19:33 ` Andi Kleen
2009-09-11 19:38 ` Daniel Walker
2009-09-11 20:58 ` Daniel Walker
2009-09-11 21:57 ` Andi Kleen
2009-09-11 22:01 ` Daniel Walker
2009-09-11 18:48 ` [PATCH] [17/21] HWPOISON: Enable .remove_error_page for migration aware file systems Andi Kleen
2009-09-11 18:48 ` [PATCH] [18/21] HWPOISON: Enable error_remove_page for NFS Andi Kleen
2009-09-11 18:48 ` [PATCH] [19/21] HWPOISON: Add madvise() based injector for hardware poisoned pages v4 Andi Kleen
2009-09-11 18:48 ` [PATCH] [20/21] HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs Andi Kleen
2009-09-11 18:48 ` [PATCH] [21/21] HWPOISON: Enable error_remove_page on btrfs Andi Kleen
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=20090911184830.0C3D3B1757@basil.firstfloor.org \
--to=andi@firstfloor.org \
--cc=linux-kernel@vger.kernel.org \
/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