* [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI.
@ 2026-10-15 14:39 Frank.Li
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel, linux-kernel,
Laurentiu Mihalcea, Frank Li, Daniel Baluta
The driver currently derives the memory region type from the referenced
memory node name, creating a hidden DT ABI.
rsc_table: rsc-table@90000000
^^^^^^^^
{ ret = <0x90000000>;
no-map;
}
m4 {
...
memory-region = <&rsc_table>;
}
Current require node name have to be rsc-table, but no any binding doc
to restrict it.
Since memory node names are not constrained by the binding, incorrect names
can silently pass DT validation, as seen in examples using "vdevbuffer"
instead of "vdev0buffer" ([1] and [2]).
Add optional memory-region-names property to define such ABI. To keep
back compactiblity, use "optional".
Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
Prevous version
https://lore.kernel.org/imx/ail0sH1UhnQBPRkr@SMW015318/
---
Changes in v5:
- fix binding region-memory-names's pattern
- add vdev1vring0 and vdev1vring1 at dts
- collect pan peng's review by tags
- Link to v4: https://patch.msgid.link/20260917-memory-region-name-v4-0-260755920ebf@nxp.com
Change in v3
- rephrase commit message and cover letter to correct descritpion and
reasons.
To: Bjorn Andersson <andersson@kernel.org>
To: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Sascha Hauer <s.hauer@pengutronix.de>
To: Pengutronix Kernel Team <kernel@pengutronix.de>
To: Fabio Estevam <festevam@gmail.com>
To: Peng Fan <peng.fan@nxp.com>
Cc: linux-remoteproc@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Cc: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Laurentiu Mihalcea (3):
dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage
.../bindings/remoteproc/fsl,imx-rproc.yaml | 11 +++
arch/arm64/boot/dts/freescale/Makefile | 3 +
.../boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso | 81 ++++++++++++++++++++++
drivers/remoteproc/imx_rproc.c | 13 +++-
drivers/remoteproc/imx_rproc.h | 21 ++++++
5 files changed, 127 insertions(+), 2 deletions(-)
---
base-commit: d419d682257d813f6cb7a28e42b35d0edf4ad038
change-id: 20260915-memory-region-name-f950eea2b78d
Best regards,
--
Frank Li <Frank.Li@nxp.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
@ 2026-10-15 14:39 ` Frank.Li
2026-10-15 14:49 ` sashiko-bot
2026-10-15 20:08 ` Rob Herring (Arm)
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
2026-10-15 14:39 ` [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage Frank.Li
2 siblings, 2 replies; 9+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel, linux-kernel,
Laurentiu Mihalcea, Frank Li
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Document the optional memory-region-names property.
The driver currently derives the memory region type from the referenced
memory node name, creating a hidden DT ABI. Since memory node names are
not constrained by the binding, incorrect names can silently pass DT
validation, as seen in examples using "vdevbuffer" instead of
"vdev0buffer" ([1] and [2]).
Add memory-region-names to explicitly identify the expected memory regions
and avoid relying on memory node names as ABI.
Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Use optional property to keep back compatible with old platform.
New platform should use memory-region-names.
---
.../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index c18f71b648890..f87036299a7b6 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -62,6 +62,15 @@ properties:
minItems: 1
maxItems: 32
+ memory-region-names:
+ minItems: 1
+ maxItems: 32
+ items:
+ anyOf:
+ - const: rsc-table
+ - pattern: "^vdev[0-9]+(buffer|vring[0-9]+)$"
+ - pattern: "^m(4|7|33)-reserved(-[a-z0-9-]+)+$"
+
power-domains:
minItems: 2
maxItems: 8
@@ -134,6 +143,7 @@ examples:
imx7d-cm4 {
compatible = "fsl,imx7d-cm4";
memory-region = <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>;
+ memory-region-names = "m4-reserved-sysmem1", "m4-reserved-sysmem2";
syscon = <&src>;
clocks = <&clks IMX7D_ARM_M4_ROOT_CLK>;
};
@@ -149,6 +159,7 @@ examples:
&mu 1 1
&mu 3 1>;
memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
+ memory-region-names = "vdev0buffer", "vdev0vring0", "vdev0vring1", "rsc-table";
syscon = <&src>;
};
...
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v5 2/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
@ 2026-10-15 14:39 ` Frank.Li
2026-10-15 20:26 ` Francesco Valla
2026-10-15 14:39 ` [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage Frank.Li
2 siblings, 1 reply; 9+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel, linux-kernel,
Laurentiu Mihalcea, Frank Li
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
The driver currently derives the memory region type from the referenced
memory node name, creating a hidden DT ABI. Since memory node names are
not constrained by the binding, incorrect names can silently pass DT
validation, as seen in examples using "vdevbuffer" instead of
"vdev0buffer" ([1] and [2]).
Parse memory-region-names to identify the expected memory regions and avoid
relying on memory node names as ABI.
Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/remoteproc/imx_rproc.c | 13 +++++++++++--
drivers/remoteproc/imx_rproc.h | 21 +++++++++++++++++++++
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 581bb07f5893f..63a1a6d87141a 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -648,7 +648,7 @@ static int imx_rproc_prepare(struct rproc *rproc)
int err;
struct resource res;
- err = of_reserved_mem_region_to_resource(np, i++, &res);
+ err = imx_rproc_rmem_to_resource(np, i++, &res);
if (err)
break;
@@ -823,11 +823,20 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
if (nph <= 0)
return 0;
+ if (!of_property_present(np, "memory-region-names")) {
+ dev_warn(dev, "using node names for carveouts should be avoided\n");
+ } else {
+ if (nph != of_property_count_strings(np, "memory-region-names")) {
+ dev_err(dev, "invalid reserved memory name count\n");
+ return -EINVAL;
+ }
+ }
+
/* remap optional addresses */
for (a = 0; a < nph; a++) {
struct resource res;
- err = of_reserved_mem_region_to_resource(np, a, &res);
+ err = imx_rproc_rmem_to_resource(np, a, &res);
if (err) {
dev_err(dev, "unable to resolve memory region\n");
return err;
diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
index 0d7d48352a109..3632bc375c711 100644
--- a/drivers/remoteproc/imx_rproc.h
+++ b/drivers/remoteproc/imx_rproc.h
@@ -7,6 +7,8 @@
#ifndef _IMX_RPROC_H
#define _IMX_RPROC_H
+#include <linux/of_reserved_mem.h>
+
/* address translation table */
struct imx_rproc_att {
u32 da; /* device address (From Cortex M4 view)*/
@@ -45,4 +47,23 @@ struct imx_rproc_dcfg {
u32 reset_vector_mask;
};
+static inline int imx_rproc_rmem_to_resource(struct device_node *np,
+ int index,
+ struct resource *res)
+{
+ int ret;
+
+ ret = of_reserved_mem_region_to_resource(np, index, res);
+ if (ret)
+ return ret;
+
+ /* "memory-region-names" is optional */
+ ret = of_property_read_string_index(np, "memory-region-names",
+ index, &res->name);
+ if (ret == -EINVAL)
+ return 0;
+
+ return ret;
+}
+
#endif /* _IMX_RPROC_H */
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
@ 2026-10-15 14:39 ` Frank.Li
2026-10-15 14:47 ` sashiko-bot
2 siblings, 1 reply; 9+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel, linux-kernel,
Laurentiu Mihalcea, Frank Li, Daniel Baluta
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Add RPMSG DT overlay for the MX95-15x15-FRDM board. This overlay is meant
to be used with the mx95evkrpmsg system manager configuration for
remoteproc and audio over rpmsg-usecases.
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
arch/arm64/boot/dts/freescale/Makefile | 3 +
.../boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso | 81 ++++++++++++++++++++++
2 files changed, 84 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index a80cccf34eb56..f3b19f3b1488e 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -960,6 +960,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx943-evk-mqs.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-ab2.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-frdm.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-frdm-rpmsg.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk-sof.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-frdm-pro.dtb
@@ -984,6 +985,8 @@ dtb-$(CONFIG_ARCH_MXC) += imx95-verdin-wifi-mallow.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-verdin-wifi-yavia.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-verdin-wifi-zinnia.dtb
+imx95-15x15-frdm-rpmsg-dtbs = imx95-15x15-frdm.dtb imx95-15x15-frdm-rpmsg.dtbo
+
imx95-15x15-evk-pcie-dtbs += imx95-15x15-evk.dtb imx-m2-pcie.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-evk-pcie.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso b/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso
new file mode 100644
index 0000000000000..c3deb277edabf
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2026 NXP
+ *
+ * This DT overlay is meant to be used alongside the mx95evkrpmsg SM
+ * configuration for remoteproc and audio over rpmsg.
+ */
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ remoteproc-cm7 {
+ compatible = "fsl,imx95-cm7";
+ mboxes = <&mu7 0 1>, <&mu7 1 1>, <&mu7 3 1>;
+ mbox-names = "tx", "rx", "rxdb";
+ memory-region = <&vdev0buffer>,
+ <&vdev0vring0>, <&vdev0vring1>,
+ <&vdev1vring0>, <&vdev1vring1>,
+ <&rsc_table>;
+ memory-region-names = "vdev0buffer",
+ "vdev0vring0", "vdev0vring1",
+ "vdev1vring0", "vdev1vring1",
+ "rsc-table";
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ vdev0vring0: memory@88000000 {
+ reg = <0 0x88000000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0vring1: memory@88008000 {
+ reg = <0 0x88008000 0 0x8000>;
+ no-map;
+ };
+
+ vdev1vring0: memory@88010000 {
+ reg = <0 0x88010000 0 0x8000>;
+ no-map;
+ };
+
+ vdev1vring1: memory@88018000 {
+ reg = <0 0x88018000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0buffer: memory@88020000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0x88020000 0 0x100000>;
+ no-map;
+ };
+
+ rsc_table: memory@88220000 {
+ reg = <0 0x88220000 0 0x1000>;
+ no-map;
+ };
+ };
+
+ sound-micfil {
+ status = "disabled";
+ };
+};
+
+&edma1 {
+ /* reserved for M7 */
+ dma-channel-mask = <0x40>;
+};
+
+&edma2 {
+ /* reserved for M7 and V2X */
+ dma-channel-mask = <0xf>;
+};
+
+&micfil {
+ /* reserved for M7 */
+ status = "reserved";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage
2026-10-15 14:39 ` [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage Frank.Li
@ 2026-10-15 14:47 ` sashiko-bot
0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-10-15 14:47 UTC (permalink / raw)
To: Frank.Li; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] dts: overlapping reserved-memory nodes due to mismatched node names
--
commit 9406ad5f04c442814590c1435b754dffaa93d0ea
Author: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage
This commit adds an RPMSG device tree overlay for the MX95-15x15-FRDM
board to support remoteproc and audio over rpmsg-usecases alongside the
mx95evkrpmsg system manager configuration.
> diff --git a/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso b/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso
> new file mode 100644
> index 0000000000000..c3deb277edabf
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso
> @@ -0,0 +1,81 @@
[ ... ]
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + vdev0vring0: memory@88000000 {
> + reg = <0 0x88000000 0 0x8000>;
> + no-map;
> + };
[Severity: Medium]
Does this node name conflict with the base device tree?
The base device tree imx95-15x15-frdm.dts defines this region using a
different name:
vdev0vring0: vdev0vring0@88000000 {
reg = <0 0x88000000 0 0x8000>;
no-map;
};
Because device tree overlays merge by exact node name and unit-address,
using a generic name like memory@88000000 here will prevent the overlay
from overriding or merging with the existing node. Instead, it will create
duplicate sibling nodes under /reserved-memory with identical physical
addresses.
Could this duplication cause the kernel's early memory reservation code
(__rmem_check_for_overlap) to detect overlaps and trigger 'OF: reserved mem:
OVERLAP detected!' errors during boot, or potentially duplicate DMA pools for
the same memory?
Would it be safer to reuse the exact base node names in the overlay, or omit
the reserved-memory block entirely if the base tree already provides the
necessary nodes?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261015-memory-region-name-v5-0-abc358b39a96@nxp.com?part=3
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
@ 2026-10-15 14:49 ` sashiko-bot
2026-10-15 20:08 ` Rob Herring (Arm)
1 sibling, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-10-15 14:49 UTC (permalink / raw)
To: Frank.Li; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dt-bindings: imx-rproc: strict regex rejects valid memory-region-names
--
commit 6408464abda5d8740cc2d4f521608bce19b964e6
Author: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
Document the optional memory-region-names property explicitly to identify the
expected memory regions. This avoids relying on memory node names as a hidden
DT ABI, which previously allowed incorrect names to silently pass validation.
Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
> diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
> index c18f71b648890..f87036299a7b6 100644
> --- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
> @@ -62,6 +62,15 @@ properties:
> minItems: 1
> maxItems: 32
>
> + memory-region-names:
> + minItems: 1
> + maxItems: 32
> + items:
> + anyOf:
> + - const: rsc-table
> + - pattern: "^vdev[0-9]+(buffer|vring[0-9]+)$"
> + - pattern: "^m(4|7|33)-reserved(-[a-z0-9-]+)+$"
[Severity: Low]
Does this regular expression structurally exclude the valid base names
themselves?
Because of the + quantifier at the end of the pattern, it requires at least
one suffix. If a device tree author attempts to add memory-region-names =
"m7-reserved" to match an existing node label like m7_reserved (e.g., in
imx95-19x19-evk.dts), dtbs_check will throw a validation error.
Should the + be changed to * to allow "m4-reserved", "m7-reserved", and
"m33-reserved" without requiring a suffix?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261015-memory-region-name-v5-0-abc358b39a96@nxp.com?part=1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
2026-10-15 14:49 ` sashiko-bot
@ 2026-10-15 20:08 ` Rob Herring (Arm)
1 sibling, 0 replies; 9+ messages in thread
From: Rob Herring (Arm) @ 2026-10-15 20:08 UTC (permalink / raw)
To: Frank.Li
Cc: Bjorn Andersson, Laurentiu Mihalcea, devicetree, Mathieu Poirier,
Pengutronix Kernel Team, Krzysztof Kozlowski, Frank Li,
linux-kernel, Peng Fan, Fabio Estevam, linux-arm-kernel,
linux-remoteproc, Conor Dooley, Sascha Hauer, imx
On Thu, 15 Oct 2026 10:39:22 -0400, Frank.Li@oss.nxp.com wrote:
> From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
>
> Document the optional memory-region-names property.
>
> The driver currently derives the memory region type from the referenced
> memory node name, creating a hidden DT ABI. Since memory node names are
> not constrained by the binding, incorrect names can silently pass DT
> validation, as seen in examples using "vdevbuffer" instead of
> "vdev0buffer" ([1] and [2]).
>
> Add memory-region-names to explicitly identify the expected memory regions
> and avoid relying on memory node names as ABI.
>
> Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
> Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> Use optional property to keep back compatible with old platform.
> New platform should use memory-region-names.
> ---
> .../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v5 2/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
@ 2026-10-15 20:26 ` Francesco Valla
2026-10-15 21:22 ` Frank Li
0 siblings, 1 reply; 9+ messages in thread
From: Francesco Valla @ 2026-10-15 20:26 UTC (permalink / raw)
To: Frank.Li
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan,
linux-remoteproc, devicetree, imx, linux-arm-kernel, linux-kernel,
Laurentiu Mihalcea, Frank Li
Hello Frank,
> The driver currently derives the memory region type from the referenced
> memory node name, creating a hidden DT ABI. Since memory node names are
> not constrained by the binding, incorrect names can silently pass DT
> validation, as seen in examples using "vdevbuffer" instead of
> "vdev0buffer" ([1] and [2]).
>
> Parse memory-region-names to identify the expected memory regions and avoid
> relying on memory node names as ABI.
>
> Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
> Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
>
> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> Reviewed-by: Peng Fan <peng.fan@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
>
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 745ce52cd822..ce9bdfc1fa98 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -643,7 +643,7 @@ static int imx_rproc_prepare(struct rproc *rproc)
> int err;
> struct resource res;
>
> - err = of_reserved_mem_region_to_resource(np, i++, &res);
> + err = imx_rproc_rmem_to_resource(np, i++, &res);
> if (err)
> break;
>
> @@ -818,11 +818,20 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
> if (nph <= 0)
> return 0;
>
> + if (!of_property_present(np, "memory-region-names")) {
> + dev_warn(dev, "using node names for carveouts should be avoided\n");
> + } else {
> + if (nph != of_property_count_strings(np, "memory-region-names")) {
> + dev_err(dev, "invalid reserved memory name count\n");
> + return -EINVAL;
> + }
> + }
> +
> /* remap optional addresses */
> for (a = 0; a < nph; a++) {
> struct resource res;
>
> - err = of_reserved_mem_region_to_resource(np, a, &res);
> + err = imx_rproc_rmem_to_resource(np, a, &res);
> if (err) {
> dev_err(dev, "unable to resolve memory region\n");
> return err;
> diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
> index 0d7d48352a10..3632bc375c71 100644
> --- a/drivers/remoteproc/imx_rproc.h
> +++ b/drivers/remoteproc/imx_rproc.h
> @@ -7,6 +7,8 @@
> #ifndef _IMX_RPROC_H
> #define _IMX_RPROC_H
>
> +#include <linux/of_reserved_mem.h>
> +
> /* address translation table */
> struct imx_rproc_att {
> u32 da; /* device address (From Cortex M4 view)*/
> @@ -45,4 +47,23 @@ struct imx_rproc_dcfg {
> u32 reset_vector_mask;
> };
>
> +static inline int imx_rproc_rmem_to_resource(struct device_node *np,
> + int index,
> + struct resource *res)
> +{
> + int ret;
> +
> + ret = of_reserved_mem_region_to_resource(np, index, res);
> + if (ret)
> + return ret;
> +
> + /* "memory-region-names" is optional */
> + ret = of_property_read_string_index(np, "memory-region-names",
> + index, &res->name);
> + if (ret == -EINVAL)
> + return 0;
> +
> + return ret;
> +}
> +
Shouldn't this be a regular function in imx_rproc.c instead of being
defined as inline here? Keeping it in the driver source file would
probably make the logic easier to follow, also considering that the
presence of memory-region-names is evaluated there in
imx_rproc_addr_init().
> #endif /* _IMX_RPROC_H */
Regards,
Francesco
--
Francesco Valla <francesco@valla.it>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v5 2/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-15 20:26 ` Francesco Valla
@ 2026-10-15 21:22 ` Frank Li
0 siblings, 0 replies; 9+ messages in thread
From: Frank Li @ 2026-10-15 21:22 UTC (permalink / raw)
To: Francesco Valla
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan,
linux-remoteproc, devicetree, imx, linux-arm-kernel, linux-kernel,
Laurentiu Mihalcea, Frank Li
On Thu, Oct 15, 2026 at 10:26:51PM +0200, Francesco Valla wrote:
> Hello Frank,
>
> > The driver currently derives the memory region type from the referenced
> > memory node name, creating a hidden DT ABI. Since memory node names are
> > not constrained by the binding, incorrect names can silently pass DT
> > validation, as seen in examples using "vdevbuffer" instead of
> > "vdev0buffer" ([1] and [2]).
> >
> > Parse memory-region-names to identify the expected memory regions and avoid
> > relying on memory node names as ABI.
> >
> > Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
> > Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
> >
> > Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> > Reviewed-by: Peng Fan <peng.fan@nxp.com>
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> >
> > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> > index 745ce52cd822..ce9bdfc1fa98 100644
> > --- a/drivers/remoteproc/imx_rproc.c
> > +++ b/drivers/remoteproc/imx_rproc.c
> > @@ -643,7 +643,7 @@ static int imx_rproc_prepare(struct rproc *rproc)
> > int err;
> > struct resource res;
> >
> > - err = of_reserved_mem_region_to_resource(np, i++, &res);
> > + err = imx_rproc_rmem_to_resource(np, i++, &res);
> > if (err)
> > break;
> >
> > @@ -818,11 +818,20 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
> > if (nph <= 0)
> > return 0;
> >
> > + if (!of_property_present(np, "memory-region-names")) {
> > + dev_warn(dev, "using node names for carveouts should be avoided\n");
> > + } else {
> > + if (nph != of_property_count_strings(np, "memory-region-names")) {
> > + dev_err(dev, "invalid reserved memory name count\n");
> > + return -EINVAL;
> > + }
> > + }
> > +
> > /* remap optional addresses */
> > for (a = 0; a < nph; a++) {
> > struct resource res;
> >
> > - err = of_reserved_mem_region_to_resource(np, a, &res);
> > + err = imx_rproc_rmem_to_resource(np, a, &res);
> > if (err) {
> > dev_err(dev, "unable to resolve memory region\n");
> > return err;
> > diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
> > index 0d7d48352a10..3632bc375c71 100644
> > --- a/drivers/remoteproc/imx_rproc.h
> > +++ b/drivers/remoteproc/imx_rproc.h
> > @@ -7,6 +7,8 @@
> > #ifndef _IMX_RPROC_H
> > #define _IMX_RPROC_H
> >
> > +#include <linux/of_reserved_mem.h>
> > +
> > /* address translation table */
> > struct imx_rproc_att {
> > u32 da; /* device address (From Cortex M4 view)*/
> > @@ -45,4 +47,23 @@ struct imx_rproc_dcfg {
> > u32 reset_vector_mask;
> > };
> >
> > +static inline int imx_rproc_rmem_to_resource(struct device_node *np,
> > + int index,
> > + struct resource *res)
> > +{
> > + int ret;
> > +
> > + ret = of_reserved_mem_region_to_resource(np, index, res);
> > + if (ret)
> > + return ret;
> > +
> > + /* "memory-region-names" is optional */
> > + ret = of_property_read_string_index(np, "memory-region-names",
> > + index, &res->name);
> > + if (ret == -EINVAL)
> > + return 0;
> > +
> > + return ret;
> > +}
> > +
>
> Shouldn't this be a regular function in imx_rproc.c instead of being
> defined as inline here?
Yes, will fix at next version.
Frank
> Keeping it in the driver source file would
> probably make the logic easier to follow, also considering that the
> presence of memory-region-names is evaluated there in
> imx_rproc_addr_init().
>
> > #endif /* _IMX_RPROC_H */
>
> Regards,
> Francesco
>
> --
> Francesco Valla <francesco@valla.it>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-10-15 21:23 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
2026-10-15 14:49 ` sashiko-bot
2026-10-15 20:08 ` Rob Herring (Arm)
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
2026-10-15 20:26 ` Francesco Valla
2026-10-15 21:22 ` Frank Li
2026-10-15 14:39 ` [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage Frank.Li
2026-10-15 14:47 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox