You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6
* 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (34 commits) HWPOISON: Remove stray phrase in a comment HWPOISON: Try to allocate migration page on the same node HWPOISON: Don't do early filtering if filter is disabled HWPOISON: Add a madvise() injector for soft page offlining HWPOISON: Add soft page offline support HWPOISON: Undefine short-hand macros after use to avoid namespace conflict HWPOISON: Use new shake_page in memory_failure HWPOISON: Use correct name for MADV_HWPOISON in documentation HWPOISON: mention HWPoison in Kconfig entry HWPOISON: Use get_user_page_fast in hwpoison madvise HWPOISON: add an interface to switch off/on all the page filters HWPOISON: add memory cgroup filter memcg: add accessor to mem_cgroup.css memcg: rename and export try_get_mem_cgroup_from_page() HWPOISON: add page flags filter mm: export stable page flags HWPOISON: limit hwpoison injector to known page types HWPOISON: add fs/device filters HWPOISON: return 0 to indicate success reliably HWPOISON: make semantics of IGNORED/DELAYED clear ...
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
What: /sys/devices/system/memory/soft_offline_page
|
||||
Date: Sep 2009
|
||||
KernelVersion: 2.6.33
|
||||
Contact: andi@firstfloor.org
|
||||
Description:
|
||||
Soft-offline the memory page containing the physical address
|
||||
written into this file. Input is a hex number specifying the
|
||||
physical address of the page. The kernel will then attempt
|
||||
to soft-offline it, by moving the contents elsewhere or
|
||||
dropping it if possible. The kernel will then be placed
|
||||
on the bad page list and never be reused.
|
||||
|
||||
The offlining is done in kernel specific granuality.
|
||||
Normally it's the base page size of the kernel, but
|
||||
this might change.
|
||||
|
||||
The page must be still accessible, not poisoned. The
|
||||
kernel will never kill anything for this, but rather
|
||||
fail the offline. Return value is the size of the
|
||||
number, or a error when the offlining failed. Reading
|
||||
the file is not allowed.
|
||||
|
||||
What: /sys/devices/system/memory/hard_offline_page
|
||||
Date: Sep 2009
|
||||
KernelVersion: 2.6.33
|
||||
Contact: andi@firstfloor.org
|
||||
Description:
|
||||
Hard-offline the memory page containing the physical
|
||||
address written into this file. Input is a hex number
|
||||
specifying the physical address of the page. The
|
||||
kernel will then attempt to hard-offline the page, by
|
||||
trying to drop the page or killing any owner or
|
||||
triggering IO errors if needed. Note this may kill
|
||||
any processes owning the page. The kernel will avoid
|
||||
to access this page assuming it's poisoned by the
|
||||
hardware.
|
||||
|
||||
The offlining is done in kernel specific granuality.
|
||||
Normally it's the base page size of the kernel, but
|
||||
this might change.
|
||||
|
||||
Return value is the size of the number, or a error when
|
||||
the offlining failed.
|
||||
Reading the file is not allowed.
|
||||
@@ -92,16 +92,62 @@ PR_MCE_KILL_GET
|
||||
|
||||
Testing:
|
||||
|
||||
madvise(MADV_POISON, ....)
|
||||
madvise(MADV_HWPOISON, ....)
|
||||
(as root)
|
||||
Poison a page in the process for testing
|
||||
|
||||
|
||||
hwpoison-inject module through debugfs
|
||||
/sys/debug/hwpoison/corrupt-pfn
|
||||
|
||||
Inject hwpoison fault at PFN echoed into this file
|
||||
/sys/debug/hwpoison/
|
||||
|
||||
corrupt-pfn
|
||||
|
||||
Inject hwpoison fault at PFN echoed into this file. This does
|
||||
some early filtering to avoid corrupted unintended pages in test suites.
|
||||
|
||||
unpoison-pfn
|
||||
|
||||
Software-unpoison page at PFN echoed into this file. This
|
||||
way a page can be reused again.
|
||||
This only works for Linux injected failures, not for real
|
||||
memory failures.
|
||||
|
||||
Note these injection interfaces are not stable and might change between
|
||||
kernel versions
|
||||
|
||||
corrupt-filter-dev-major
|
||||
corrupt-filter-dev-minor
|
||||
|
||||
Only handle memory failures to pages associated with the file system defined
|
||||
by block device major/minor. -1U is the wildcard value.
|
||||
This should be only used for testing with artificial injection.
|
||||
|
||||
corrupt-filter-memcg
|
||||
|
||||
Limit injection to pages owned by memgroup. Specified by inode number
|
||||
of the memcg.
|
||||
|
||||
Example:
|
||||
mkdir /cgroup/hwpoison
|
||||
|
||||
usemem -m 100 -s 1000 &
|
||||
echo `jobs -p` > /cgroup/hwpoison/tasks
|
||||
|
||||
memcg_ino=$(ls -id /cgroup/hwpoison | cut -f1 -d' ')
|
||||
echo $memcg_ino > /debug/hwpoison/corrupt-filter-memcg
|
||||
|
||||
page-types -p `pidof init` --hwpoison # shall do nothing
|
||||
page-types -p `pidof usemem` --hwpoison # poison its pages
|
||||
|
||||
corrupt-filter-flags-mask
|
||||
corrupt-filter-flags-value
|
||||
|
||||
When specified, only poison pages if ((page_flags & mask) == value).
|
||||
This allows stress testing of many kinds of pages. The page_flags
|
||||
are the same as in /proc/kpageflags. The flag bits are defined in
|
||||
include/linux/kernel-page-flags.h and documented in
|
||||
Documentation/vm/pagemap.txt
|
||||
|
||||
Architecture specific MCE injector
|
||||
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
/*
|
||||
* page-types: Tool for querying page flags
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; version 2.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should find a copy of v2 of the GNU General Public License somewhere on
|
||||
* your Linux system; if not, write to the Free Software Foundation, Inc., 59
|
||||
* Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
*
|
||||
* Copyright (C) 2009 Intel corporation
|
||||
*
|
||||
* Authors: Wu Fengguang <fengguang.wu@intel.com>
|
||||
*
|
||||
* Released under the General Public License (GPL).
|
||||
*/
|
||||
|
||||
#define _LARGEFILE64_SOURCE
|
||||
|
||||
Reference in New Issue
Block a user