nvdimm.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] dt-bindings: pmem: Convert binding to YAML
@ 2025-06-06 18:11 Drew Fustini
  2025-06-07  2:29 ` Dan Williams
  2025-06-09 13:32 ` Rob Herring
  0 siblings, 2 replies; 10+ messages in thread
From: Drew Fustini @ 2025-06-06 18:11 UTC (permalink / raw)
  To: Dan Williams, Vishal Verma, Dave Jiang, nvdimm
  Cc: Oliver O'Halloran, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, devicetree, linux-kernel, Drew Fustini,
	Conor Dooley

Convert the PMEM device tree binding from text to YAML. This will allow
device trees with pmem-region nodes to pass dtbs_check.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Acked-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Drew Fustini <drew@pdp7.com>
---
Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
through the nvdimm tree?

Note: checkpatch complains about "DT binding docs and includes should
be a separate patch". Rob told me that this a false positive. I'm hoping
that I can fix the false positive at some point if I can remember enough
perl :)

v3:
 - no functional changes
 - add Oliver's Acked-by
 - bump version to avoid duplicate message-id mess in v2 and v2 resend:
   https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/

v2 resend:
 - actually put v2 in the Subject
 - add Conor's Acked-by
   - https://lore.kernel.org/all/20250520-refract-fling-d064e11ddbdf@spud/

v2:
 - remove the txt file to make the conversion complete
 - https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/

v1:
 - https://lore.kernel.org/all/20250518035539.7961-1-drew@pdp7.com/

 .../devicetree/bindings/pmem/pmem-region.txt  | 65 -------------------
 .../devicetree/bindings/pmem/pmem-region.yaml | 49 ++++++++++++++
 MAINTAINERS                                   |  2 +-
 3 files changed, 50 insertions(+), 66 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt
 create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.yaml

diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt
deleted file mode 100644
index cd79975e85ec..000000000000
--- a/Documentation/devicetree/bindings/pmem/pmem-region.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-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;
-	};
-
diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
new file mode 100644
index 000000000000..a4aa4ce3318b
--- /dev/null
+++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
@@ -0,0 +1,49 @@
+# 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:
+  - Bjorn Helgaas <bhelgaas@google.com>
+  - 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>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index ee93363ec2cb..eba2b81ec568 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13798,7 +13798,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
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-06 18:11 [PATCH v3] dt-bindings: pmem: Convert binding to YAML Drew Fustini
@ 2025-06-07  2:29 ` Dan Williams
  2025-06-09 14:31   ` Ira Weiny
  2025-06-09 13:32 ` Rob Herring
  1 sibling, 1 reply; 10+ messages in thread
From: Dan Williams @ 2025-06-07  2:29 UTC (permalink / raw)
  To: Drew Fustini, Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	ira.weiny
  Cc: Oliver O'Halloran, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, devicetree, linux-kernel, Drew Fustini,
	Conor Dooley

[ add Ira ]

Drew Fustini wrote:
> Convert the PMEM device tree binding from text to YAML. This will allow
> device trees with pmem-region nodes to pass dtbs_check.
> 
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Acked-by: Oliver O'Halloran <oohall@gmail.com>
> Signed-off-by: Drew Fustini <drew@pdp7.com>
> ---
> Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> through the nvdimm tree?

Ira has been handling nvdimm pull requests as of late. Oliver's ack is
sufficient for me.

Acked-by: Dan Williams <dan.j.williams@intel.com>

@Ira do you have anything else pending?


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-06 18:11 [PATCH v3] dt-bindings: pmem: Convert binding to YAML Drew Fustini
  2025-06-07  2:29 ` Dan Williams
@ 2025-06-09 13:32 ` Rob Herring
  2025-06-10 18:14   ` Drew Fustini
  1 sibling, 1 reply; 10+ messages in thread
From: Rob Herring @ 2025-06-09 13:32 UTC (permalink / raw)
  To: Drew Fustini
  Cc: Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Krzysztof Kozlowski, Conor Dooley,
	devicetree, linux-kernel, Conor Dooley

On Fri, Jun 06, 2025 at 11:11:17AM -0700, Drew Fustini wrote:
> Convert the PMEM device tree binding from text to YAML. This will allow
> device trees with pmem-region nodes to pass dtbs_check.
> 
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Acked-by: Oliver O'Halloran <oohall@gmail.com>
> Signed-off-by: Drew Fustini <drew@pdp7.com>
> ---
> Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> through the nvdimm tree?
> 
> Note: checkpatch complains about "DT binding docs and includes should
> be a separate patch". Rob told me that this a false positive. I'm hoping
> that I can fix the false positive at some point if I can remember enough
> perl :)
> 
> v3:
>  - no functional changes
>  - add Oliver's Acked-by
>  - bump version to avoid duplicate message-id mess in v2 and v2 resend:
>    https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> 
> v2 resend:
>  - actually put v2 in the Subject
>  - add Conor's Acked-by
>    - https://lore.kernel.org/all/20250520-refract-fling-d064e11ddbdf@spud/
> 
> v2:
>  - remove the txt file to make the conversion complete
>  - https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> 
> v1:
>  - https://lore.kernel.org/all/20250518035539.7961-1-drew@pdp7.com/
> 
>  .../devicetree/bindings/pmem/pmem-region.txt  | 65 -------------------
>  .../devicetree/bindings/pmem/pmem-region.yaml | 49 ++++++++++++++
>  MAINTAINERS                                   |  2 +-
>  3 files changed, 50 insertions(+), 66 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt
>  create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.yaml
> 
> diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt
> deleted file mode 100644
> index cd79975e85ec..000000000000
> --- a/Documentation/devicetree/bindings/pmem/pmem-region.txt
> +++ /dev/null
> @@ -1,65 +0,0 @@
> -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;
> -	};
> -
> diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> new file mode 100644
> index 000000000000..a4aa4ce3318b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> @@ -0,0 +1,49 @@
> +# 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:
> +  - Bjorn Helgaas <bhelgaas@google.com>

Drop Bjorn. He only did typo fixes on this.

> +  - 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: |

Don't need '|' here.

> +      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>;
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index ee93363ec2cb..eba2b81ec568 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -13798,7 +13798,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
> -- 
> 2.43.0
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-07  2:29 ` Dan Williams
@ 2025-06-09 14:31   ` Ira Weiny
  2025-06-10  2:10     ` Drew Fustini
  0 siblings, 1 reply; 10+ messages in thread
From: Ira Weiny @ 2025-06-09 14:31 UTC (permalink / raw)
  To: Dan Williams, Drew Fustini, Vishal Verma, Dave Jiang, nvdimm,
	ira.weiny
  Cc: Oliver O'Halloran, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, devicetree, linux-kernel, Drew Fustini,
	Conor Dooley

Dan Williams wrote:
> [ add Ira ]
> 
> Drew Fustini wrote:
> > Convert the PMEM device tree binding from text to YAML. This will allow
> > device trees with pmem-region nodes to pass dtbs_check.
> > 
> > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > ---
> > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > through the nvdimm tree?
> 
> Ira has been handling nvdimm pull requests as of late. Oliver's ack is
> sufficient for me.
> 
> Acked-by: Dan Williams <dan.j.williams@intel.com>
> 
> @Ira do you have anything else pending?
> 

I don't.  I've never built the device tree make targets to test.

The docs[1] say to run make dtbs_check but it is failing:

$ make dtbs_check
make[1]: *** No rule to make target 'dtbs_check'.  Stop.
make: *** [Makefile:248: __sub-make] Error 2


dt_binding_check fails too.

$ make dt_binding_check
  SCHEMA  Documentation/devicetree/bindings/processed-schema.json
Traceback (most recent call last):
  File "/usr/bin/dt-mk-schema", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/usr/lib/python3.13/site-packages/dtschema/mk_schema.py", line 28, in main
    schemas = dtschema.DTValidator(args.schemas).schemas
              ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 373, in __init__
    self.make_property_type_cache()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 460, in make_property_type_cache
    self.props, self.pat_props = get_prop_types(self.schemas)
                                 ~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 194, in get_prop_types
    del props[r'^[a-z][a-z0-9\-]*$']
        ~~~~~^^^^^^^^^^^^^^^^^^^^^^^
KeyError: '^[a-z][a-z0-9\\-]*$'
make[2]: *** [Documentation/devicetree/bindings/Makefile:63: Documentation/devicetree/bindings/processed-schema.json] Error 1
make[2]: *** Deleting file 'Documentation/devicetree/bindings/processed-schema.json'
make[1]: *** [/home/iweiny/dev/linux-nvdimm/Makefile:1522: dt_binding_schemas] Error 2
make: *** [Makefile:248: __sub-make] Error 2

How do I test this?

Ira

[1] https://docs.kernel.org/devicetree/bindings/writing-schema.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-09 14:31   ` Ira Weiny
@ 2025-06-10  2:10     ` Drew Fustini
  2025-06-10 18:43       ` Drew Fustini
  2025-06-10 22:05       ` Ira Weiny
  0 siblings, 2 replies; 10+ messages in thread
From: Drew Fustini @ 2025-06-10  2:10 UTC (permalink / raw)
  To: Ira Weiny
  Cc: Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, devicetree, linux-kernel, Conor Dooley

On Mon, Jun 09, 2025 at 09:31:26AM -0500, Ira Weiny wrote:
> Dan Williams wrote:
> > [ add Ira ]
> > 
> > Drew Fustini wrote:
> > > Convert the PMEM device tree binding from text to YAML. This will allow
> > > device trees with pmem-region nodes to pass dtbs_check.
> > > 
> > > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > > ---
> > > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > > through the nvdimm tree?
> > 
> > Ira has been handling nvdimm pull requests as of late. Oliver's ack is
> > sufficient for me.
> > 
> > Acked-by: Dan Williams <dan.j.williams@intel.com>
> > 
> > @Ira do you have anything else pending?
> > 
> 
> I don't.  I've never built the device tree make targets to test.
> 
> The docs[1] say to run make dtbs_check but it is failing:
> 
> $ make dtbs_check
> make[1]: *** No rule to make target 'dtbs_check'.  Stop.
> make: *** [Makefile:248: __sub-make] Error 2

I believe this is because the ARCH is set to x86 and I don't believe
dtbs_check is valid for that. I work on riscv which does use device tree
so I use this command:

make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- dtbs_check


> 
> 
> dt_binding_check fails too.
> 
> $ make dt_binding_check
>   SCHEMA  Documentation/devicetree/bindings/processed-schema.json
> Traceback (most recent call last):
>   File "/usr/bin/dt-mk-schema", line 8, in <module>
>     sys.exit(main())
>              ~~~~^^
>   File "/usr/lib/python3.13/site-packages/dtschema/mk_schema.py", line 28, in main
>     schemas = dtschema.DTValidator(args.schemas).schemas
>               ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
>   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 373, in __init__
>     self.make_property_type_cache()
>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
>   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 460, in make_property_type_cache
>     self.props, self.pat_props = get_prop_types(self.schemas)
>                                  ~~~~~~~~~~~~~~^^^^^^^^^^^^^^
>   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 194, in get_prop_types
>     del props[r'^[a-z][a-z0-9\-]*$']
>         ~~~~~^^^^^^^^^^^^^^^^^^^^^^^
> KeyError: '^[a-z][a-z0-9\\-]*$'
> make[2]: *** [Documentation/devicetree/bindings/Makefile:63: Documentation/devicetree/bindings/processed-schema.json] Error 1
> make[2]: *** Deleting file 'Documentation/devicetree/bindings/processed-schema.json'
> make[1]: *** [/home/iweiny/dev/linux-nvdimm/Makefile:1522: dt_binding_schemas] Error 2
> make: *** [Makefile:248: __sub-make] Error 2
> 
> How do I test this?

dt_binding_check should work on x86. Maybe you don't have dtschema and
yamllint installed?

You should be able to install with:

pip3 install dtschema yamllint

And run the binding check with:

make dt_binding_check DT_SCHEMA_FILES=pmem-region.yaml

You should see the following output:

  SCHEMA  Documentation/devicetree/bindings/processed-schema.json
  CHKDT   ./Documentation/devicetree/bindings
  LINT    ./Documentation/devicetree/bindings
  DTEX    Documentation/devicetree/bindings/pmem/pmem-region.example.dts
  DTC [C] Documentation/devicetree/bindings/pmem/pmem-region.example.dtb

Thanks,
Drew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-09 13:32 ` Rob Herring
@ 2025-06-10 18:14   ` Drew Fustini
  2025-06-11 14:33     ` Ira Weiny
  0 siblings, 1 reply; 10+ messages in thread
From: Drew Fustini @ 2025-06-10 18:14 UTC (permalink / raw)
  To: Rob Herring
  Cc: Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Krzysztof Kozlowski, Conor Dooley,
	devicetree, linux-kernel, Conor Dooley

On Mon, Jun 09, 2025 at 08:32:41AM -0500, Rob Herring wrote:
> On Fri, Jun 06, 2025 at 11:11:17AM -0700, Drew Fustini wrote:
> > Convert the PMEM device tree binding from text to YAML. This will allow
> > device trees with pmem-region nodes to pass dtbs_check.
> > 
> > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > ---
> > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > through the nvdimm tree?
> > 
> > Note: checkpatch complains about "DT binding docs and includes should
> > be a separate patch". Rob told me that this a false positive. I'm hoping
> > that I can fix the false positive at some point if I can remember enough
> > perl :)
> > 
> > v3:
> >  - no functional changes
> >  - add Oliver's Acked-by
> >  - bump version to avoid duplicate message-id mess in v2 and v2 resend:
> >    https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> > 
> > v2 resend:
> >  - actually put v2 in the Subject
> >  - add Conor's Acked-by
> >    - https://lore.kernel.org/all/20250520-refract-fling-d064e11ddbdf@spud/
> > 
> > v2:
> >  - remove the txt file to make the conversion complete
> >  - https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> > 
> > v1:
> >  - https://lore.kernel.org/all/20250518035539.7961-1-drew@pdp7.com/
> > 
> >  .../devicetree/bindings/pmem/pmem-region.txt  | 65 -------------------
> >  .../devicetree/bindings/pmem/pmem-region.yaml | 49 ++++++++++++++
> >  MAINTAINERS                                   |  2 +-
> >  3 files changed, 50 insertions(+), 66 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt
> >  create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt
> > deleted file mode 100644
> > index cd79975e85ec..000000000000
> > --- a/Documentation/devicetree/bindings/pmem/pmem-region.txt
> > +++ /dev/null
> > @@ -1,65 +0,0 @@
> > -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;
> > -	};
> > -
> > diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > new file mode 100644
> > index 000000000000..a4aa4ce3318b
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > @@ -0,0 +1,49 @@
> > +# 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:
> > +  - Bjorn Helgaas <bhelgaas@google.com>
> 
> Drop Bjorn. He only did typo fixes on this.
> 
> > +  - 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: |
> 
> Don't need '|' here.

Rob - Thanks for the feedback. Should I send a new revision with these
two changes?

Drew

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-10  2:10     ` Drew Fustini
@ 2025-06-10 18:43       ` Drew Fustini
  2025-06-10 22:05       ` Ira Weiny
  1 sibling, 0 replies; 10+ messages in thread
From: Drew Fustini @ 2025-06-10 18:43 UTC (permalink / raw)
  To: Ira Weiny
  Cc: Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, devicetree, linux-kernel, Conor Dooley

On Mon, Jun 09, 2025 at 07:10:42PM -0700, Drew Fustini wrote:
> On Mon, Jun 09, 2025 at 09:31:26AM -0500, Ira Weiny wrote:
> > Dan Williams wrote:
> > > [ add Ira ]
> > > 
> > > Drew Fustini wrote:
> > > > Convert the PMEM device tree binding from text to YAML. This will allow
> > > > device trees with pmem-region nodes to pass dtbs_check.
> > > > 
> > > > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > > > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > > > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > > > ---
> > > > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > > > through the nvdimm tree?
> > > 
> > > Ira has been handling nvdimm pull requests as of late. Oliver's ack is
> > > sufficient for me.
> > > 
> > > Acked-by: Dan Williams <dan.j.williams@intel.com>
> > > 
> > > @Ira do you have anything else pending?
> > > 
> > 
> > I don't.  I've never built the device tree make targets to test.
> > 
> > The docs[1] say to run make dtbs_check but it is failing:
> > 
> > $ make dtbs_check
> > make[1]: *** No rule to make target 'dtbs_check'.  Stop.
> > make: *** [Makefile:248: __sub-make] Error 2
> 
> I believe this is because the ARCH is set to x86 and I don't believe
> dtbs_check is valid for that. I work on riscv which does use device tree
> so I use this command:
> 
> make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- dtbs_check
> 
> 
> > 
> > 
> > dt_binding_check fails too.
> > 
> > $ make dt_binding_check
> >   SCHEMA  Documentation/devicetree/bindings/processed-schema.json
> > Traceback (most recent call last):
> >   File "/usr/bin/dt-mk-schema", line 8, in <module>
> >     sys.exit(main())
> >              ~~~~^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/mk_schema.py", line 28, in main
> >     schemas = dtschema.DTValidator(args.schemas).schemas
> >               ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 373, in __init__
> >     self.make_property_type_cache()
> >     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 460, in make_property_type_cache
> >     self.props, self.pat_props = get_prop_types(self.schemas)
> >                                  ~~~~~~~~~~~~~~^^^^^^^^^^^^^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 194, in get_prop_types
> >     del props[r'^[a-z][a-z0-9\-]*$']
> >         ~~~~~^^^^^^^^^^^^^^^^^^^^^^^
> > KeyError: '^[a-z][a-z0-9\\-]*$'
> > make[2]: *** [Documentation/devicetree/bindings/Makefile:63: Documentation/devicetree/bindings/processed-schema.json] Error 1
> > make[2]: *** Deleting file 'Documentation/devicetree/bindings/processed-schema.json'
> > make[1]: *** [/home/iweiny/dev/linux-nvdimm/Makefile:1522: dt_binding_schemas] Error 2
> > make: *** [Makefile:248: __sub-make] Error 2
> > 
> > How do I test this?
> 
> dt_binding_check should work on x86. Maybe you don't have dtschema and
> yamllint installed?
> 
> You should be able to install with:
> 
> pip3 install dtschema yamllint
> 
> And run the binding check with:
> 
> make dt_binding_check DT_SCHEMA_FILES=pmem-region.yaml
> 
> You should see the following output:
> 
>   SCHEMA  Documentation/devicetree/bindings/processed-schema.json
>   CHKDT   ./Documentation/devicetree/bindings
>   LINT    ./Documentation/devicetree/bindings
>   DTEX    Documentation/devicetree/bindings/pmem/pmem-region.example.dts
>   DTC [C] Documentation/devicetree/bindings/pmem/pmem-region.example.dtb
> 
> Thanks,
> Drew

I'm also on libera.chat [1] irc as drewfustini. There is a #devicetree
channel where we should be able to get things sorted quickly if you are
still getting those errors.

Thanks,
Drew

[1] https://libera.chat/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-10  2:10     ` Drew Fustini
  2025-06-10 18:43       ` Drew Fustini
@ 2025-06-10 22:05       ` Ira Weiny
  1 sibling, 0 replies; 10+ messages in thread
From: Ira Weiny @ 2025-06-10 22:05 UTC (permalink / raw)
  To: Drew Fustini, Ira Weiny
  Cc: Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, devicetree, linux-kernel, Conor Dooley

Drew Fustini wrote:
> On Mon, Jun 09, 2025 at 09:31:26AM -0500, Ira Weiny wrote:
> > Dan Williams wrote:
> > > [ add Ira ]
> > > 
> > > Drew Fustini wrote:
> > > > Convert the PMEM device tree binding from text to YAML. This will allow
> > > > device trees with pmem-region nodes to pass dtbs_check.
> > > > 
> > > > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > > > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > > > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > > > ---
> > > > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > > > through the nvdimm tree?
> > > 
> > > Ira has been handling nvdimm pull requests as of late. Oliver's ack is
> > > sufficient for me.
> > > 
> > > Acked-by: Dan Williams <dan.j.williams@intel.com>
> > > 
> > > @Ira do you have anything else pending?
> > > 
> > 
> > I don't.  I've never built the device tree make targets to test.
> > 
> > The docs[1] say to run make dtbs_check but it is failing:
> > 
> > $ make dtbs_check
> > make[1]: *** No rule to make target 'dtbs_check'.  Stop.
> > make: *** [Makefile:248: __sub-make] Error 2
> 
> I believe this is because the ARCH is set to x86 and I don't believe
> dtbs_check is valid for that. I work on riscv which does use device tree
> so I use this command:
> 
> make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- dtbs_check

Yea I'm not set up for a cross compile.

> 
> 
> > 
> > 
> > dt_binding_check fails too.
> > 
> > $ make dt_binding_check
> >   SCHEMA  Documentation/devicetree/bindings/processed-schema.json
> > Traceback (most recent call last):
> >   File "/usr/bin/dt-mk-schema", line 8, in <module>
> >     sys.exit(main())
> >              ~~~~^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/mk_schema.py", line 28, in main
> >     schemas = dtschema.DTValidator(args.schemas).schemas
> >               ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 373, in __init__
> >     self.make_property_type_cache()
> >     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 460, in make_property_type_cache
> >     self.props, self.pat_props = get_prop_types(self.schemas)
> >                                  ~~~~~~~~~~~~~~^^^^^^^^^^^^^^
> >   File "/usr/lib/python3.13/site-packages/dtschema/validator.py", line 194, in get_prop_types
> >     del props[r'^[a-z][a-z0-9\-]*$']
> >         ~~~~~^^^^^^^^^^^^^^^^^^^^^^^
> > KeyError: '^[a-z][a-z0-9\\-]*$'
> > make[2]: *** [Documentation/devicetree/bindings/Makefile:63: Documentation/devicetree/bindings/processed-schema.json] Error 1
> > make[2]: *** Deleting file 'Documentation/devicetree/bindings/processed-schema.json'
> > make[1]: *** [/home/iweiny/dev/linux-nvdimm/Makefile:1522: dt_binding_schemas] Error 2
> > make: *** [Makefile:248: __sub-make] Error 2
> > 
> > How do I test this?
> 
> dt_binding_check should work on x86. Maybe you don't have dtschema and
> yamllint installed?
> 
> You should be able to install with:
> 
> pip3 install dtschema yamllint
> 
> And run the binding check with:
> 
> make dt_binding_check DT_SCHEMA_FILES=pmem-region.yaml
> 
> You should see the following output:
> 
>   SCHEMA  Documentation/devicetree/bindings/processed-schema.json
>   CHKDT   ./Documentation/devicetree/bindings
>   LINT    ./Documentation/devicetree/bindings
>   DTEX    Documentation/devicetree/bindings/pmem/pmem-region.example.dts
>   DTC [C] Documentation/devicetree/bindings/pmem/pmem-region.example.dtb

Thanks that worked!

I'll get a PR set up,
Ira

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-10 18:14   ` Drew Fustini
@ 2025-06-11 14:33     ` Ira Weiny
  2025-06-11 17:11       ` Drew Fustini
  0 siblings, 1 reply; 10+ messages in thread
From: Ira Weiny @ 2025-06-11 14:33 UTC (permalink / raw)
  To: Drew Fustini, Rob Herring
  Cc: Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Krzysztof Kozlowski, Conor Dooley,
	devicetree, linux-kernel, Conor Dooley

Drew Fustini wrote:
> On Mon, Jun 09, 2025 at 08:32:41AM -0500, Rob Herring wrote:
> > On Fri, Jun 06, 2025 at 11:11:17AM -0700, Drew Fustini wrote:
> > > Convert the PMEM device tree binding from text to YAML. This will allow
> > > device trees with pmem-region nodes to pass dtbs_check.
> > > 
> > > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > > ---
> > > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > > through the nvdimm tree?
> > > 
> > > Note: checkpatch complains about "DT binding docs and includes should
> > > be a separate patch". Rob told me that this a false positive. I'm hoping
> > > that I can fix the false positive at some point if I can remember enough
> > > perl :)
> > > 
> > > v3:
> > >  - no functional changes
> > >  - add Oliver's Acked-by
> > >  - bump version to avoid duplicate message-id mess in v2 and v2 resend:
> > >    https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> > > 
> > > v2 resend:
> > >  - actually put v2 in the Subject
> > >  - add Conor's Acked-by
> > >    - https://lore.kernel.org/all/20250520-refract-fling-d064e11ddbdf@spud/
> > > 
> > > v2:
> > >  - remove the txt file to make the conversion complete
> > >  - https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> > > 
> > > v1:
> > >  - https://lore.kernel.org/all/20250518035539.7961-1-drew@pdp7.com/
> > > 
> > >  .../devicetree/bindings/pmem/pmem-region.txt  | 65 -------------------
> > >  .../devicetree/bindings/pmem/pmem-region.yaml | 49 ++++++++++++++
> > >  MAINTAINERS                                   |  2 +-
> > >  3 files changed, 50 insertions(+), 66 deletions(-)
> > >  delete mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt
> > >  create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > > 
> > > diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt
> > > deleted file mode 100644
> > > index cd79975e85ec..000000000000
> > > --- a/Documentation/devicetree/bindings/pmem/pmem-region.txt
> > > +++ /dev/null
> > > @@ -1,65 +0,0 @@
> > > -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;
> > > -	};
> > > -
> > > diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > > new file mode 100644
> > > index 000000000000..a4aa4ce3318b
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > > @@ -0,0 +1,49 @@
> > > +# 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:
> > > +  - Bjorn Helgaas <bhelgaas@google.com>
> > 
> > Drop Bjorn. He only did typo fixes on this.
> > 
> > > +  - 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: |
> > 
> > Don't need '|' here.
> 
> Rob - Thanks for the feedback. Should I send a new revision with these
> two changes?

I can do a clean up as I have not sent to Linus yet.

Here are the changes if you approve I'll change it and push to linux-next.

Ira

diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
index a4aa4ce3318b..bd0f0c793f03 100644
--- a/Documentation/devicetree/bindings/pmem/pmem-region.yaml
+++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
@@ -5,7 +5,6 @@ $id: http://devicetree.org/schemas/pmem-region.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 maintainers:
-  - Bjorn Helgaas <bhelgaas@google.com>
   - Oliver O'Halloran <oohall@gmail.com>
 
 title: Persistent Memory Regions
@@ -30,7 +29,7 @@ properties:
     maxItems: 1
 
   volatile:
-    description: |
+    description:
       Indicates the region is volatile (non-persistent) and the OS can skip
       cache flushes for writes
     type: boolean

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] dt-bindings: pmem: Convert binding to YAML
  2025-06-11 14:33     ` Ira Weiny
@ 2025-06-11 17:11       ` Drew Fustini
  0 siblings, 0 replies; 10+ messages in thread
From: Drew Fustini @ 2025-06-11 17:11 UTC (permalink / raw)
  To: Ira Weiny
  Cc: Rob Herring, Dan Williams, Vishal Verma, Dave Jiang, nvdimm,
	Oliver O'Halloran, Krzysztof Kozlowski, Conor Dooley,
	devicetree, linux-kernel, Conor Dooley

On Wed, Jun 11, 2025 at 09:33:17AM -0500, Ira Weiny wrote:
> Drew Fustini wrote:
> > On Mon, Jun 09, 2025 at 08:32:41AM -0500, Rob Herring wrote:
> > > On Fri, Jun 06, 2025 at 11:11:17AM -0700, Drew Fustini wrote:
> > > > Convert the PMEM device tree binding from text to YAML. This will allow
> > > > device trees with pmem-region nodes to pass dtbs_check.
> > > > 
> > > > Acked-by: Conor Dooley <conor.dooley@microchip.com>
> > > > Acked-by: Oliver O'Halloran <oohall@gmail.com>
> > > > Signed-off-by: Drew Fustini <drew@pdp7.com>
> > > > ---
> > > > Dan/Dave/Vishal: does it make sense for this pmem binding patch to go
> > > > through the nvdimm tree?
> > > > 
> > > > Note: checkpatch complains about "DT binding docs and includes should
> > > > be a separate patch". Rob told me that this a false positive. I'm hoping
> > > > that I can fix the false positive at some point if I can remember enough
> > > > perl :)
> > > > 
> > > > v3:
> > > >  - no functional changes
> > > >  - add Oliver's Acked-by
> > > >  - bump version to avoid duplicate message-id mess in v2 and v2 resend:
> > > >    https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> > > > 
> > > > v2 resend:
> > > >  - actually put v2 in the Subject
> > > >  - add Conor's Acked-by
> > > >    - https://lore.kernel.org/all/20250520-refract-fling-d064e11ddbdf@spud/
> > > > 
> > > > v2:
> > > >  - remove the txt file to make the conversion complete
> > > >  - https://lore.kernel.org/all/20250520021440.24324-1-drew@pdp7.com/
> > > > 
> > > > v1:
> > > >  - https://lore.kernel.org/all/20250518035539.7961-1-drew@pdp7.com/
> > > > 
> > > >  .../devicetree/bindings/pmem/pmem-region.txt  | 65 -------------------
> > > >  .../devicetree/bindings/pmem/pmem-region.yaml | 49 ++++++++++++++
> > > >  MAINTAINERS                                   |  2 +-
> > > >  3 files changed, 50 insertions(+), 66 deletions(-)
> > > >  delete mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt
> > > >  create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt
> > > > deleted file mode 100644
> > > > index cd79975e85ec..000000000000
> > > > --- a/Documentation/devicetree/bindings/pmem/pmem-region.txt
> > > > +++ /dev/null
> > > > @@ -1,65 +0,0 @@
> > > > -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;
> > > > -	};
> > > > -
> > > > diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > > > new file mode 100644
> > > > index 000000000000..a4aa4ce3318b
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> > > > @@ -0,0 +1,49 @@
> > > > +# 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:
> > > > +  - Bjorn Helgaas <bhelgaas@google.com>
> > > 
> > > Drop Bjorn. He only did typo fixes on this.
> > > 
> > > > +  - 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: |
> > > 
> > > Don't need '|' here.
> > 
> > Rob - Thanks for the feedback. Should I send a new revision with these
> > two changes?
> 
> I can do a clean up as I have not sent to Linus yet.
> 
> Here are the changes if you approve I'll change it and push to linux-next.
> 
> Ira
> 
> diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.yaml b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> index a4aa4ce3318b..bd0f0c793f03 100644
> --- a/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> +++ b/Documentation/devicetree/bindings/pmem/pmem-region.yaml
> @@ -5,7 +5,6 @@ $id: http://devicetree.org/schemas/pmem-region.yaml#
>  $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
>  maintainers:
> -  - Bjorn Helgaas <bhelgaas@google.com>
>    - Oliver O'Halloran <oohall@gmail.com>
>  
>  title: Persistent Memory Regions
> @@ -30,7 +29,7 @@ properties:
>      maxItems: 1
>  
>    volatile:
> -    description: |
> +    description:
>        Indicates the region is volatile (non-persistent) and the OS can skip
>        cache flushes for writes
>      type: boolean

Thanks for fixing it up. That looks good to me.

Drew

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-06-11 17:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-06 18:11 [PATCH v3] dt-bindings: pmem: Convert binding to YAML Drew Fustini
2025-06-07  2:29 ` Dan Williams
2025-06-09 14:31   ` Ira Weiny
2025-06-10  2:10     ` Drew Fustini
2025-06-10 18:43       ` Drew Fustini
2025-06-10 22:05       ` Ira Weiny
2025-06-09 13:32 ` Rob Herring
2025-06-10 18:14   ` Drew Fustini
2025-06-11 14:33     ` Ira Weiny
2025-06-11 17:11       ` Drew Fustini

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).