> 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