* [PATCH v8 0/2] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI.
@ 2026-10-22 19:04 Frank.Li
2026-10-22 19:04 ` [PATCH v8 1/2] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
2026-10-22 19:05 ` [PATCH v8 2/2] remoteproc: imx_rpoc: use " Frank.Li
0 siblings, 2 replies; 3+ messages in thread
From: Frank.Li @ 2026-10-22 19:04 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, Francesco Valla
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 v8:
- remove dev_warning
- remove dts patches
- Link to v7: https://patch.msgid.link/20261020-memory-region-name-v7-0-1413d5928340@nxp.com
Changes in v7:
- move imx_rproc_rmem_to_resource() close to caller
- collect Francesco and peng fan's review tag
- Link to v6: https://patch.msgid.link/20261019-memory-region-name-v6-0-2e46b2e7d667@nxp.com
Changes in v6:
- collect rob's review-by tags for binding
- move imx_rproc_rmem_to_resource to c file
- dts move related memory region node into overlay file
- Link to v5: https://patch.msgid.link/20261015-memory-region-name-v5-0-abc358b39a96@nxp.com
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 (2):
dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
.../bindings/remoteproc/fsl,imx-rproc.yaml | 11 ++++++++
drivers/remoteproc/imx_rproc.c | 29 ++++++++++++++++++++--
2 files changed, 38 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] 3+ messages in thread
* [PATCH v8 1/2] dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
2026-10-22 19:04 [PATCH v8 0/2] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
@ 2026-10-22 19:04 ` Frank.Li
2026-10-22 19:05 ` [PATCH v8 2/2] remoteproc: imx_rpoc: use " Frank.Li
1 sibling, 0 replies; 3+ messages in thread
From: Frank.Li @ 2026-10-22 19:04 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>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Peng Fan <peng.fan@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] 3+ messages in thread
* [PATCH v8 2/2] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-22 19:04 [PATCH v8 0/2] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-22 19:04 ` [PATCH v8 1/2] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
@ 2026-10-22 19:05 ` Frank.Li
1 sibling, 0 replies; 3+ messages in thread
From: Frank.Li @ 2026-10-22 19:05 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, Francesco Valla
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>
Reviewed-by: Francesco Valla <francesco@valla.it>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/remoteproc/imx_rproc.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 581bb07f5893f..2707040f16d06 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -635,6 +635,25 @@ static int imx_rproc_sm_lmm_prepare(struct rproc *rproc)
return 0;
}
+static 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;
+}
+
static int imx_rproc_prepare(struct rproc *rproc)
{
struct imx_rproc *priv = rproc->priv;
@@ -648,7 +667,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 +842,17 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
if (nph <= 0)
return 0;
+ if (of_property_present(np, "memory-region-names") &&
+ 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;
--
2.43.0
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-22 19:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-22 19:04 [PATCH v8 0/2] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-22 19:04 ` [PATCH v8 1/2] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
2026-10-22 19:05 ` [PATCH v8 2/2] remoteproc: imx_rpoc: use " 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®