From: Oliver O'Halloran <oohall@gmail.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: devicetree@vger.kernel.org, linux-nvdimm@lists.01.org
Subject: [RESEND v2 3/4] doc/devicetree: Persistent memory region bindings
Date: Wed, 4 Apr 2018 00:24:14 +1000 [thread overview]
Message-ID: <20180403142415.30083-3-oohall@gmail.com> (raw)
In-Reply-To: <20180403142415.30083-1-oohall@gmail.com>
Add device-tree binding documentation for the nvdimm region driver.
Cc: devicetree@vger.kernel.org
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
---
v2: Changed name from nvdimm-region to pmem-region.
Cleaned up the example binding and fixed the overlapping regions.
Added support for multiple regions in a single reg.
---
.../devicetree/bindings/pmem/pmem-region.txt | 80 ++++++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 81 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt
diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt
new file mode 100644
index 000000000000..de48dc8cd562
--- /dev/null
+++ b/Documentation/devicetree/bindings/pmem/pmem-region.txt
@@ -0,0 +1,80 @@
+Device-tree bindings for persistent memory regions
+-----------------------------------------------------
+
+Persistent memory refers to a class of memory devices that are:
+
+ a) Usable as main system memory (i.e. cacheable), and
+ b) Retain their contents across power failure.
+
+Given b) it is best to think of persistent memory as a kind of memory mapped
+storage device. To ensure data integrity the operating system needs to manage
+persistent regions separately to the normal memory pool. To aid with that this
+binding provides a standardised interface for discovering where persistent
+memory regions exist inside the physical address space.
+
+Bindings for the region nodes:
+-----------------------------
+
+Required properties:
+ - compatible = "pmem-region"
+
+ - reg = <base, size>;
+ The system physical address range of this nvdimm region.
+
+ If the reg property contains multiple address ranges
+ each address range will be treated as though it was specified
+ in a separate device node. Having multiple address ranges in a
+ node implies no special relationship between the two ranges.
+
+Optional properties:
+ - Any relevant NUMA assocativity properties for the target platform.
+
+ - A "volatile" property indicating that this region is actually in
+ normal DRAM and does not require cache flushes after each write.
+
+ If this property is absent then the OS must assume that the region
+ is backed by non-volatile memory.
+
+A complete example:
+--------------------
+
+Here we define three 4KB regions:
+
+ a) A volatile region at 0x5000 on numa node 0,
+ b) A non-volatile region at 0x6000, and
+ c) A non-volatile region at 0x8000.
+
+/dts-v1/;
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ platform {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ /*
+ * This node specifies one non-volatile region spanning from
+ * 0x5000 to 0x5fff.
+ */
+ pmem@5000 {
+ compatible = "pmem-region";
+ reg = <0x00005000 0x00001000>;
+ numa-node-id = <0>;
+ volatile;
+ };
+
+ /*
+ * This node specifies two 4KB regions that are backed by
+ * volatile (normal) memory.
+ */
+ pmem@6000 {
+ compatible = "pmem-region";
+ reg = <0x00006000 0x00001000 0x00008000 0x00001000>;
+ };
+ };
+};
+
diff --git a/MAINTAINERS b/MAINTAINERS
index 6ef38be700e8..fa3c9211d6ff 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8041,6 +8041,7 @@ L: linux-nvdimm@lists.01.org
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
S: Supported
F: drivers/nvdimm/of_pmem.c
+F: Documentation/devicetree/bindings/pmem/pmem-region.txt
LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
M: Dan Williams <dan.j.williams@intel.com>
--
2.9.5
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2018-04-03 14:25 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-03 14:24 [RESEND v2 1/4] libnvdimm: Add of_node to region and bus descriptors Oliver O'Halloran
2018-04-03 14:24 ` [RESEND v2 2/4] libnvdimm: Add device-tree based driver Oliver O'Halloran
2018-04-03 17:34 ` Dan Williams
2018-04-03 14:24 ` Oliver O'Halloran [this message]
2018-04-03 17:37 ` [RESEND v2 3/4] doc/devicetree: Persistent memory region bindings Dan Williams
2018-04-04 12:07 ` Balbir Singh
2018-04-04 14:04 ` Oliver
2018-04-04 14:21 ` Dan Williams
2018-04-05 4:43 ` Balbir Singh
2018-04-05 11:34 ` Oliver
2018-04-05 12:11 ` Michael Ellerman
2018-04-05 12:43 ` Oliver
2018-04-05 14:43 ` Dan Williams
2018-04-06 2:14 ` Oliver
2018-04-06 2:25 ` Dan Williams
2018-04-06 3:57 ` Benjamin Herrenschmidt
2018-04-03 14:24 ` [RESEND v2 4/4] powerpc/powernv: Create platform devs for nvdimm buses Oliver O'Halloran
2018-04-04 12:20 ` Balbir Singh
2018-04-04 11:30 ` [RESEND v2 1/4] libnvdimm: Add of_node to region and bus descriptors Balbir Singh
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=20180403142415.30083-3-oohall@gmail.com \
--to=oohall@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=linuxppc-dev@lists.ozlabs.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;
as well as URLs for NNTP newsgroup(s).