On Fri, May 22, 2026 at 04:18:46AM -0700, Laurentiu Mihalcea wrote:
>From: Laurentiu Mihalcea <[email protected]>
>
>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 protected]>
>---
> 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
>