Commit 52da431b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'libnvdimm-fixes-6.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm

Pull libnvdimm fix from Ira Weiny:
 "This converts the pmem-region device tree bindings to YAML to fix
  errors and bring it up to date"

* tag 'libnvdimm-fixes-6.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
  dt-bindings: pmem: Convert binding to YAML
parents 46637478 62a65b32
Loading
Loading
Loading
Loading
+0 −65
Original line number Diff line number Diff line
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 reg property should specify an address range that is
		translatable to a system physical address range. This address
		range should be mappable as normal system memory would be
		(i.e cacheable).

		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 associativity properties for the target platform.

	- volatile; This property indicates that this region is actually
	  backed by non-persistent memory. This lets the OS know that it
	  may skip the cache flushes required to ensure data is made
	  persistent after a write.

	  If this property is absent then the OS must assume that the region
	  is backed by non-volatile memory.

Examples:
--------------------

	/*
	 * This node specifies one 4KB region spanning from
	 * 0x5000 to 0x5fff that is backed by non-volatile memory.
	 */
	pmem@5000 {
		compatible = "pmem-region";
		reg = <0x00005000 0x00001000>;
	};

	/*
	 * This node specifies two 4KB regions that are backed by
	 * volatile (normal) memory.
	 */
	pmem@6000 {
		compatible = "pmem-region";
		reg = < 0x00006000 0x00001000
			0x00008000 0x00001000 >;
		volatile;
	};
+48 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pmem-region.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

maintainers:
  - Oliver O'Halloran <oohall@gmail.com>

title: Persistent Memory Regions

description: |
  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.

properties:
  compatible:
    const: pmem-region

  reg:
    maxItems: 1

  volatile:
    description:
      Indicates the region is volatile (non-persistent) and the OS can skip
      cache flushes for writes
    type: boolean

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    pmem@5000 {
        compatible = "pmem-region";
        reg = <0x00005000 0x00001000>;
    };
+1 −1
Original line number Diff line number Diff line
@@ -13800,7 +13800,7 @@ M: Oliver O'Halloran <oohall@gmail.com>
L:	nvdimm@lists.linux.dev
S:	Supported
Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
F:	Documentation/devicetree/bindings/pmem/pmem-region.txt
F:	Documentation/devicetree/bindings/pmem/pmem-region.yaml
F:	drivers/nvdimm/of_pmem.c
LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM