06.10.2021 01:19, Dmitry Osipenko пишет: ...
I reproduced the OFF problem by removing the clk prepare/unprepare from the suspend/resume of the clk driver and making some extra changes to clock tree topology and etc to trigger the problem on Nexus 7.
tegra-pmc 7000e400.pmc: failed to turn off PM domain heg: -13
It happens from genpd_suspend_noirq() -> tegra_genpd_power_off() -> clk -> GENPD -> I2C -> runtime-pm.
-13 is EACCES, it comes from the runtime PM of I2C device. RPM is prohibited/disabled during late (NOIRQ) suspend by the drivers core.
My bad, I double-checked and it's not I2C RPM that is failing now, but the clock's RPM [1], which is also unavailable during NOIRQ.
[1] https://elixir.free-electrons.com/linux/v5.15-rc4/source/drivers/clk/clk.c#L...
Previously it was I2C RPM that was failing in a similar way, but code changed a tad since that time.