diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-18 11:42:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-18 11:42:49 -0400 |
commit | 34a984f7b0cc6355a1e0c184251d0d4cc86f44d2 (patch) | |
tree | 5ed28ee6cf191216be394c78234b13edbe69d1f8 /arch/x86/include | |
parent | 90d1c087861dcc3d1175993fc03492c137fd21bb (diff) | |
parent | 4c1eaa2344fb26bb5e936fb4d8ee307343ea0089 (diff) |
Merge branch 'x86-pmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull PMEM driver from Ingo Molnar:
"This is the initial support for the pmem block device driver:
persistent non-volatile memory space mapped into the system's physical
memory space as large physical memory regions.
The driver is based on Intel code, written by Ross Zwisler, with fixes
by Boaz Harrosh, integrated with x86 e820 memory resource management
and tidied up by Christoph Hellwig.
Note that there were two other separate pmem driver submissions to
lkml: but apparently all parties (Ross Zwisler, Boaz Harrosh) are
reasonably happy with this initial version.
This version enables minimal support that enables persistent memory
devices out in the wild to work as block devices, identified through a
magic (non-standard) e820 flag and auto-discovered if
CONFIG_X86_PMEM_LEGACY=y, or added explicitly through manipulating the
memory maps via the "memmap=..." boot option with the new, special '!'
modifier character.
Limitations: this is a regular block device, and since the pmem areas
are not struct page backed, they are invisible to the rest of the
system (other than the block IO device), so direct IO to/from pmem
areas, direct mmap() or XIP is not possible yet. The page cache will
also shadow and double buffer pmem contents, etc.
Initial support is for x86"
* 'x86-pmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
drivers/block/pmem: Fix 32-bit build warning in pmem_alloc()
drivers/block/pmem: Add a driver for persistent memory
x86/mm: Add support for the non-standard protected e820 type
Diffstat (limited to 'arch/x86/include')
-rw-r--r-- | arch/x86/include/uapi/asm/e820.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/include/uapi/asm/e820.h b/arch/x86/include/uapi/asm/e820.h index d993e33f5236..960a8a9dc4ab 100644 --- a/arch/x86/include/uapi/asm/e820.h +++ b/arch/x86/include/uapi/asm/e820.h | |||
@@ -33,6 +33,16 @@ | |||
33 | #define E820_NVS 4 | 33 | #define E820_NVS 4 |
34 | #define E820_UNUSABLE 5 | 34 | #define E820_UNUSABLE 5 |
35 | 35 | ||
36 | /* | ||
37 | * This is a non-standardized way to represent ADR or NVDIMM regions that | ||
38 | * persist over a reboot. The kernel will ignore their special capabilities | ||
39 | * unless the CONFIG_X86_PMEM_LEGACY=y option is set. | ||
40 | * | ||
41 | * ( Note that older platforms also used 6 for the same type of memory, | ||
42 | * but newer versions switched to 12 as 6 was assigned differently. Some | ||
43 | * time they will learn... ) | ||
44 | */ | ||
45 | #define E820_PRAM 12 | ||
36 | 46 | ||
37 | /* | 47 | /* |
38 | * reserved RAM used by kernel itself | 48 | * reserved RAM used by kernel itself |