Skip to content

Commit ddc141e

Browse files
oohaldjbw
authored andcommitted
doc/devicetree: Persistent memory region bindings
Add device-tree binding documentation for the nvdimm region driver. Cc: devicetree@vger.kernel.org Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Acked-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
1 parent 7171976 commit ddc141e

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
Device-tree bindings for persistent memory regions
2+
-----------------------------------------------------
3+
4+
Persistent memory refers to a class of memory devices that are:
5+
6+
a) Usable as main system memory (i.e. cacheable), and
7+
b) Retain their contents across power failure.
8+
9+
Given b) it is best to think of persistent memory as a kind of memory mapped
10+
storage device. To ensure data integrity the operating system needs to manage
11+
persistent regions separately to the normal memory pool. To aid with that this
12+
binding provides a standardised interface for discovering where persistent
13+
memory regions exist inside the physical address space.
14+
15+
Bindings for the region nodes:
16+
-----------------------------
17+
18+
Required properties:
19+
- compatible = "pmem-region"
20+
21+
- reg = <base, size>;
22+
The reg property should specificy an address range that is
23+
translatable to a system physical address range. This address
24+
range should be mappable as normal system memory would be
25+
(i.e cacheable).
26+
27+
If the reg property contains multiple address ranges
28+
each address range will be treated as though it was specified
29+
in a separate device node. Having multiple address ranges in a
30+
node implies no special relationship between the two ranges.
31+
32+
Optional properties:
33+
- Any relevant NUMA assocativity properties for the target platform.
34+
35+
- volatile; This property indicates that this region is actually
36+
backed by non-persistent memory. This lets the OS know that it
37+
may skip the cache flushes required to ensure data is made
38+
persistent after a write.
39+
40+
If this property is absent then the OS must assume that the region
41+
is backed by non-volatile memory.
42+
43+
Examples:
44+
--------------------
45+
46+
/*
47+
* This node specifies one 4KB region spanning from
48+
* 0x5000 to 0x5fff that is backed by non-volatile memory.
49+
*/
50+
pmem@5000 {
51+
compatible = "pmem-region";
52+
reg = <0x00005000 0x00001000>;
53+
};
54+
55+
/*
56+
* This node specifies two 4KB regions that are backed by
57+
* volatile (normal) memory.
58+
*/
59+
pmem@6000 {
60+
compatible = "pmem-region";
61+
reg = < 0x00006000 0x00001000
62+
0x00008000 0x00001000 >;
63+
volatile;
64+
};
65+

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8041,6 +8041,7 @@ L: linux-nvdimm@lists.01.org
80418041
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
80428042
S: Supported
80438043
F: drivers/nvdimm/of_pmem.c
8044+
F: Documentation/devicetree/bindings/pmem/pmem-region.txt
80448045

80458046
LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
80468047
M: Dan Williams <dan.j.williams@intel.com>

0 commit comments

Comments
 (0)