[PATCH v5 0/3] remoteproc: imx_rproc: allow attaching to running core kicked by the bootloader

Hiago De Franco
2025-06-17T19:36:00Z

From: Hiago De Franco <hiago.franco@toradex.com>

This patch series depends on Ulf's patches that are currently under
review, "pmdomain: Add generic ->sync_state() support to genpd" [1].
Without them, this series is not going to work.

For the i.MX8X and i.MX8 family SoCs, currently when the remotecore is
started by the bootloader and the M core and A core are in the same
partition, the driver is not capable to detect the remote core and
report the correct state of it.

This patch series implement a new function, dev_pm_genpd_is_on(), which
returns the power status of a given power domain (M core power domains
IMX_SC_R_M4_0_PID0 and IMX_SC_R_M4_0_MU_1A in this case). If it is
already powered on, the driver will attach to it.

Finally, the imx_rproc_clk_enable() function was also changed to make it
return before dev_clk_get() is called, as it currently generates an SCU
fault reset if the remote core is already running and the kernel tries
to enable the clock again. These changes are a follow up from a v1 sent
to imx_rproc [2] and from a reported regression [3].

[1] https://lore.kernel.org/all/20250523134025.75130-1-ulf.hansson@linaro.org/
[2] https://lore.kernel.org/lkml/20250423155131.101473-1-hiagofranco@gmail.com/
[3] https://lore.kernel.org/lkml/20250404141713.ac2ntcsjsf7epdfa@hiago-nb/

v5:
- pm_runtime_get_sync() removed in favor of pm_runtime_resume_and_get(),
checking the return value of it.
- Added pm_runtime_disable() and pm_runtime_put() to imx_rproc_remove().
- Fixed missing "()" in dev_pm_genpd_is_on description.
- Updated dev_pm_genpd_is_on() function description to be explicit the
function reflects the current power status of the device and that this
might change after the function returns, especially if the genpd is
shared.

v4:
- https://lore.kernel.org/lkml/20250602131906.25751-1-hiagofranco@gmail.com/

v3:
- https://lore.kernel.org/all/20250519171514.61974-1-hiagofranco@gmail.com/

v2:
- https://lore.kernel.org/lkml/20250507160056.11876-1-hiagofranco@gmail.com/

v1:
- https://lore.kernel.org/lkml/20250505154849.64889-1-hiagofranco@gmail.com/

Hiago De Franco (3):
pmdomain: core: introduce dev_pm_genpd_is_on()
remoteproc: imx_rproc: skip clock enable when M-core is managed by the
SCU
remoteproc: imx_rproc: detect and attach to pre-booted remote cores

drivers/pmdomain/core.c | 33 +++++++++++++++++++++++++++
drivers/remoteproc/imx_rproc.c | 41 ++++++++++++++++++++++++++++------
include/linux/pm_domain.h | 6 +++++
3 files changed, 73 insertions(+), 7 deletions(-)

--
2.39.5