Subject: Re: [PATCH 2/5] remoteproc: imx_rpoc: fix carveout name parsing

From: Peng Fan <[email-masked]>
Date: Mon, 25 May 2026 10:13:15 +0800

On Fri, May 22, 2026 at 04:18:46AM -0700, Laurentiu Mihalcea wrote:
>From: Laurentiu Mihalcea <[email-masked]>
>
>The imx remoteproc driver assumes that the names of the reserved memory
>regions reflect their usage (e.g. "vdevbuffer", "vdev0vring0", etc.). This
>conflicts with the devicetree specification's recommendation, which states
>that the names of the devicetree nodes should be generic.
>
>Therefore, instead of relying on the node names, use the names passed via
>the "memory-region-names" property if present. Otherwise, keep the old
>behavior.
>
>The definition of imx_rproc_rmem_to_resource() is added to a common place
>as imx_dsp_rproc.c can also use it given that it suffers from the same
>aforementioned problem.
>
>Signed-off-by: Laurentiu Mihalcea <[email-masked]>
>---
> drivers/remoteproc/imx_rproc.c |  7 +++++--
> drivers/remoteproc/imx_rproc.h | 19 +++++++++++++++++++
> 2 files changed, 24 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
>index 7f54322244ac..1ee1c658dcc1 100644
>--- a/drivers/remoteproc/imx_rproc.c
>+++ b/drivers/remoteproc/imx_rproc.c
>@@ -672,7 +672,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;
> 
>@@ -850,11 +850,14 @@ 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");

Please check 'memory-regions && !memory-region-names', some demos may not
need to use memory regions.

Regards
Peng

>+
> 	/* 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..58e9daa41afe 100644
>--- a/drivers/remoteproc/imx_rproc.h
>+++ b/drivers/remoteproc/imx_rproc.h
>@@ -45,4 +45,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
>