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