On 3.03.2023 12:32, Bryan O'Donoghue wrote: > On 03/03/2023 02:35, Konrad Dybcio wrote: >> Currently, when sync_state calls set(n, n) all the paths for setting >> parameters on an icc node are called twice. Avoid that. >> >> Fixes: 751f4d14cdb4 ("interconnect: icc-rpm: Set destination bandwidth as well as source bandwidth") >> Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> >> --- >> RFC comes from the fact that I *believe* this should be correct, but I'm >> not entirely sure about it.. >> >> >> drivers/interconnect/qcom/icc-rpm.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c >> index a6e0de03f46b..d35db1af9b08 100644 >> --- a/drivers/interconnect/qcom/icc-rpm.c >> +++ b/drivers/interconnect/qcom/icc-rpm.c >> @@ -387,7 +387,7 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst) >> ret = __qcom_icc_set(src, src_qn, sum_bw); >> if (ret) >> return ret; >> - if (dst_qn) { >> + if (dst_qn && src_qn != dst_qn) { >> ret = __qcom_icc_set(dst, dst_qn, sum_bw); >> if (ret) >> return ret; > > Is it possible for src_qn == dst_qn ? As the commit message says, sync_state calls set(n, n) in drivers/interconnect/core.c : icc_sync_state(struct device *dev) Konrad > > Iff you confirm that experimentally - add my > > Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>