On 4.01.2023 00:07, Bryan O'Donoghue wrote: > On 03/01/2023 17:30, Konrad Dybcio wrote: >> Until now, the icc-rpm driver unconditionally set QoS params, even on >> empty requests. This is superfluous and the downstream counterpart does >> not do it. Follow it by doing the same. >> >> Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> >> --- >> drivers/interconnect/qcom/icc-rpm.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c >> index 43b9ce0dcb6a..06e0fee547ab 100644 >> --- a/drivers/interconnect/qcom/icc-rpm.c >> +++ b/drivers/interconnect/qcom/icc-rpm.c >> @@ -193,6 +193,12 @@ static int qcom_icc_qos_set(struct icc_node *node, u64 sum_bw) >> struct qcom_icc_provider *qp = to_qcom_provider(node->provider); >> struct qcom_icc_node *qn = node->data; >> + /* Defer setting QoS until the first non-zero bandwidth request. */ >> + if (!(node->avg_bw || node->peak_bw)) { >> + dev_dbg(node->provider->dev, "NOT Setting QoS for %s\n", qn->name); >> + return 0; >> + } >> + >> dev_dbg(node->provider->dev, "Setting QoS for %s\n", qn->name); >> switch (qp->type) { > > Doesn't downstream clear the registers on a zero allocation request ? > > https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.BR.1.2.9-00810-8x09.0/drivers/platform/msm/msm_bus/msm_bus_bimc.c#L1302 > > https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.BR.1.2.9-00810-8x09.0/drivers/platform/msm/msm_bus/msm_bus_bimc.c#L1318 > > https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.BR.1.2.9-00810-8x09.0/drivers/platform/msm/msm_bus/msm_bus_bimc.c#L1367 > > msm_bus_bimc_set_qos_bw() > { > /* Only calculate if there's a requested bandwidth and window */ > if (qbw->bw && qbw->ws) { > }else > /* Clear bandwidth registers */ > set_qos_bw_regs(base, mas_index, 0, 0, 0, 0, 0); > } Yes, looks like that's the case, but also it's only for BIMC, not for NOC: https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.BR.1.2.9-00810-8x09.0/drivers/platform/msm/msm_bus/msm_bus_noc.c#L246 Moreover, it only concerns QoS parameters that are not supported on mainline (Grant Period, Grant Count, Threshold Lo/Me/Hi) [1], so that pretty much addresses your worries, I think.. And FWIW that's definitely not the case anymore for QNOC (and BIMC for that matter) on msm-5.4: https://github.com/sonyxperiadev/kernel/blob/aosp/LA.UM.9.14.r1/drivers/interconnect/qcom/icc-rpm.c#L217 Konrad [1] Note: msm8939 seems to be a somewhat heavy user of these properties, maybe it would be worth looking into implementing them? > > --- > bod