Message ID | 20230110132202.956619-2-konrad.dybcio@linaro.org |
---|---|
State | New |
Headers | show |
Series | [v2,01/10] interconnect: qcom: rpm: Don't set QoS params before non-zero bw is requested | expand |
On 10.01.2023 15:00, Bryan O'Donoghue wrote: > On 10/01/2023 13:21, 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@linaro.org> >> --- >> 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 df3196f72536..361dcbf3386f 100644 >> --- a/drivers/interconnect/qcom/icc-rpm.c >> +++ b/drivers/interconnect/qcom/icc-rpm.c >> @@ -191,6 +191,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) { > > I still think you should include the original logic on the else, for the minimum case of silicon that predates the 5.4 kernel release. > > /* Clear bandwidth registers */ > set_qos_bw_regs(base, mas_index, 0, 0, 0, 0, 0); > > Either that or get the relevant silicon engineers at qcom to say the host side port write is redundant. After some conversations in private, it was concluded that this patch should most likely not be applied, as there's not enough reasoning beyond "downstream does this, let's copy it". The other 9 should be still reviewed. Konrad > > --- > bod
diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c index df3196f72536..361dcbf3386f 100644 --- a/drivers/interconnect/qcom/icc-rpm.c +++ b/drivers/interconnect/qcom/icc-rpm.c @@ -191,6 +191,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) {
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@linaro.org> --- drivers/interconnect/qcom/icc-rpm.c | 6 ++++++ 1 file changed, 6 insertions(+)