Le 01/02/2023 à 11:15, Johan Hovold a écrit :
Make sure to disable clocks also in case attaching the power domain fails.
Fixes: 7de109c0abe9 ("interconnect: icc-rpm: Add support for bus power domain") Cc: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org # 5.17 Cc: Yassine Oudjana y.oudjana-g/b1ySJe57IN+BqQ9rBEUg@public.gmane.org Signed-off-by: Johan Hovold johan+linaro-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org
drivers/interconnect/qcom/icc-rpm.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index 91778cfcbc65..da595059cafd 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -498,8 +498,7 @@ int qnoc_probe(struct platform_device *pdev) if (desc->has_bus_pd) { ret = dev_pm_domain_attach(dev, true);
if (ret)
return ret;
goto err_disable_clks;
Hi, this change looks strange because we now skip the rest of the function.
Is it really intended?
Also, should dev_pm_domain_detach() be called somewhere in the error handling path and remove function ?
CJ
} provider = &qp->provider; @@ -514,8 +513,7 @@ int qnoc_probe(struct platform_device *pdev) ret = icc_provider_add(provider); if (ret) { dev_err(dev, "error adding interconnect provider: %d\n", ret);
clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
return ret;
}goto err_disable_clks;
for (i = 0; i < num_nodes; i++) { @@ -550,8 +548,9 @@ int qnoc_probe(struct platform_device *pdev) return 0; err: icc_nodes_remove(provider);
- clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks); icc_provider_del(provider);
+err_disable_clks:
- clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
return ret; }