Re: [PATCH v2 4/5] media: iris: Fix power-off ordering to disable power domain after clocks

Krzysztof Kozlowski <[email protected]>
Newsgroups org.kernel.vger.linux-media,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.stable
Message-ID <20260819-truthful-porcupine-from-eldorado-bbf912@quoll>
On Tue, Aug 18, 2026 at 09:24:17PM +0530, Vishnu Reddy wrote:
> In iris_vpu_power_off_hw(), iris_disable_power_domains() was called
> before the associated clocks (IRIS_BSE_HW_CLK, IRIS_HW_AHB_CLK,
> IRIS_HW_CLK) were disabled and unprepared. This reverses the correct
> power-down sequence: with the power domain already removed, the
> subsequent clk_disable_unprepare() calls end up operating on
> clock-controller hardware that is no longer powered, which can hang
> or behave unpredictably.
> 
> Reorder the calls so iris_disable_power_domains() runs after all
> three clocks are disabled, ensuring clocks are always turned off
> while their power domain is still active, and mirroring the reverse
> of the power-on sequence.
> 
> Fixes: bb8a95aa038e ("media: iris: implement power management")
> Cc: [email protected]
> Reviewed-by: Bryan O'Donoghue <[email protected]>
> Signed-off-by: Vishnu Reddy <[email protected]>
> ---
>  drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/media/platform/qcom/iris/iris_vpu_common.c
> index e4847c107709..3cd493b06d84 100644
> --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c
> +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c
> @@ -223,10 +223,10 @@ int iris_vpu_power_off_controller(struct iris_core *core)
>  void iris_vpu_power_off_hw(struct iris_core *core)
>  {
>  	dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN], false);
> -	iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN]);
>  	iris_disable_unprepare_clock(core, IRIS_BSE_HW_CLK);
>  	iris_disable_unprepare_clock(core, IRIS_HW_AHB_CLK);
>  	iris_disable_unprepare_clock(core, IRIS_HW_CLK);
> +	iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN]);

Really, how is this depending on dma-coherent DTS patch?

Best regards,
Krzysztof
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.