From: Tony Luck <tony.luck@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCHv2 0/3] Find mirrored memory, use for boot time allocations
Date: Fri, 8 May 2015 09:44:21 -0700 [thread overview]
Message-ID: <cover.1431103461.git.tony.luck@intel.com> (raw)
Some high end Intel Xeon systems report uncorrectable memory errors
as a recoverable machine check. Linux has included code for some time
to process these and just signal the affected processes (or even
recover completely if the error was in a read only page that can be
replaced by reading from disk).
But we have no recovery path for errors encountered during kernel
code execution. Except for some very specific cases were are unlikely
to ever be able to recover.
Enter memory mirroring. Actually 3rd generation of memory mirroing.
Gen1: All memory is mirrored
Pro: No s/w enabling - h/w just gets good data from other side of the mirror
Con: Halves effective memory capacity available to OS/applications
Gen2: Partial memory mirror - just mirror memory begind some memory controllers
Pro: Keep more of the capacity
Con: Nightmare to enable. Have to choose between allocating from
mirrored memory for safety vs. NUMA local memory for performance
Gen3: Address range partial memory mirror - some mirror on each memory controller
Pro: Can tune the amount of mirror and keep NUMA performance
Con: I have to write memory management code to implement
The current plan is just to use mirrored memory for kernel allocations. This
has been broken into two phases:
1) This patch series - find the mirrored memory, use it for boot time allocations
2) Wade into mm/page_alloc.c and define a ZONE_MIRROR to pick up the unused
mirrored memory from mm/memblock.c and only give it out to select kernel
allocations (this is still being scoped because page_alloc.c is scary).
Tony Luck (3):
mm/memblock: Add extra "flags" to memblock to allow selection of
memory based on attribute
mm/memblock: Allocate boot time data structures from mirrored memory
x86, mirror: x86 enabling - find mirrored memory ranges
arch/s390/kernel/crash_dump.c | 5 +-
arch/sparc/mm/init_64.c | 6 ++-
arch/x86/kernel/check.c | 3 +-
arch/x86/kernel/e820.c | 3 +-
arch/x86/kernel/setup.c | 3 ++
arch/x86/mm/init_32.c | 2 +-
arch/x86/platform/efi/efi.c | 21 ++++++++
include/linux/efi.h | 3 ++
include/linux/memblock.h | 49 +++++++++++------
mm/cma.c | 6 ++-
mm/memblock.c | 123 +++++++++++++++++++++++++++++++++---------
mm/memtest.c | 3 +-
mm/nobootmem.c | 14 ++++-
13 files changed, 188 insertions(+), 53 deletions(-)
--
2.1.4
--
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 reply other threads:[~2015-05-08 17:17 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-08 16:44 Tony Luck [this message]
2015-05-07 22:17 ` [PATCHv2 1/3] mm/memblock: Add extra "flags" to memblock to allow selection of memory based on attribute Tony Luck
2015-05-07 22:18 ` [PATCHv2 2/3] mm/memblock: Allocate boot time data structures from mirrored memory Tony Luck
2015-05-07 22:19 ` [PATCHv2 3/3] x86, mirror: x86 enabling - find mirrored memory ranges Tony Luck
2015-05-08 20:03 ` [PATCHv2 0/3] Find mirrored memory, use for boot time allocations Andrew Morton
2015-05-08 20:38 ` Tony Luck
2015-05-08 20:49 ` Andrew Morton
2015-05-08 23:41 ` Tony Luck
2015-05-19 3:01 ` Xishi Qiu
2015-05-19 4:48 ` Tony Luck
2015-05-19 6:37 ` Xishi Qiu
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=cover.1431103461.git.tony.luck@intel.com \
--to=tony.luck@intel.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.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