[PATCH v2 3/3] remoteproc: imx_rproc: add power mode check for remote core attachment
Peng Fan
peng.fan at nxp.com
Wed May 28 20:54:47 PDT 2025
> Subject: Re: [PATCH v2 3/3] remoteproc: imx_rproc: add power mode
> check for remote core attachment
>
> On Tue, May 27, 2025 at 10:45:25AM -0300, Hiago De Franco wrote:
>
> [...]
>
> > >
> > > Thanks for the detailed analysis!
> > >
> > > This is a very similar issue as many other genpd providers are
> > > suffering from - and something that I have been working on
> recently
> > > to fix.
> > >
> > > A few days ago I posted a new version of a series [1], which is
> > > based upon using the fw_devlink and ->sync_state() support. In
> > > principle, we need to prevent genpd from power-off a PM domain if
> it
> > > was powered-on during boot , until all the consumer-drivers of a
> PM
> > > domain have been probed.
> > >
> > > I had a look at the DT description of how imx describes power-
> domain
> > > providers/consumers, along with the corresponding genpd provider
> > > implementation in drivers/pmdomain/imx/scu-pd.c. Unless I missed
> > > something, I think [1] should do the trick for you, without any
> > > further changes. Can you please give it a try and see if that solves
> > > this problem?
> >
> > Cool! I can give a try and provide an answer soon. Thanks!
>
> We are making progress ;-)
>
> With the patches you shared Ulf (I added them on top of the current
> master branch), it works as expected, dev_pm_genpd_is_on() returns 0
> when I boot the kernel without M4 running and it returns 1 when I
> boot the kernel with M4 running with a hello-world demo.
>
> However now I tried to, if dev_pm_genpd_is_on() returns 1, put the
> DETACHED state, something as
>
> if (dev_pm_genpd_is_on(priv->pd_list->pd_devs[0]))
> priv->rproc->state = RPROC_DETACHED;
>
> In this case I used 0 because I understand this is the
> IMX_SC_R_M4_0_PID0 defined in my device tree overlay:
>
> power-domains = <&pd IMX_SC_R_M4_0_PID0>,
> <&pd IMX_SC_R_M4_0_MU_1A>;
>
> But in this case, the kernel does not boot anymore, I see the "Starting
> kernel..." and nothing else.
Please add "earlycon" in bootargs to see where it hangs.
>
> I am using the pm_runtime functions before rproc_add():
>
> @@ -1146,6 +1154,9 @@ static int imx_rproc_probe(struct
> platform_device *pdev)
> }
> }
>
> + pm_runtime_enable(dev);
> + pm_runtime_get_sync(dev);
I think only make this apply for i.MX8QX/8QM/DX, then no
impact to other patforms.
Regards,
Peng
More information about the linux-arm-kernel
mailing list