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 <[email protected]>
---
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) {
--
2.39.0
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 <[email protected]>
> ---
> 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.
---
bod
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 <[email protected]>
>> ---
>> 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