* [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; 7+ 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] 7+ 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 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, 1 reply; 7+ 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 [flat|nested] 7+ 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; 7+ 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 [flat|nested] 7+ 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
2 siblings, 0 replies; 7+ 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 [flat|nested] 7+ 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 20:08 ` Rob Herring (Arm)
0 siblings, 0 replies; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ messages in thread
end of thread, other threads:[~2026-10-15 21:23 UTC | newest]
Thread overview: 7+ 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 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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®