+++ /dev/null
-From f84f5b6f72e68bbaeb850b58ac167e4a3a47532a Mon Sep 17 00:00:00 2001
-From: Mike Tipton <mdtipton@codeaurora.org>
-Date: Wed, 21 Jul 2021 10:54:32 -0700
-Subject: interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate
-
-From: Mike Tipton <mdtipton@codeaurora.org>
-
-commit f84f5b6f72e68bbaeb850b58ac167e4a3a47532a upstream.
-
-We're only adding BCMs to the commit list in aggregate(), but there are
-cases where pre_aggregate() is called without subsequently calling
-aggregate(). In particular, in icc_sync_state() when a node with initial
-BW has zero requests. Since BCMs aren't added to the commit list in
-these cases, we don't actually send the zero BW request to HW. So the
-resources remain on unnecessarily.
-
-Add BCMs to the commit list in pre_aggregate() instead, which is always
-called even when there are no requests.
-
-Fixes: 976daac4a1c5 ("interconnect: qcom: Consolidate interconnect RPMh support")
-Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
-Link: https://lore.kernel.org/r/20210721175432.2119-5-mdtipton@codeaurora.org
-Signed-off-by: Georgi Djakov <djakov@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/interconnect/qcom/icc-rpmh.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/drivers/interconnect/qcom/icc-rpmh.c
-+++ b/drivers/interconnect/qcom/icc-rpmh.c
-@@ -20,13 +20,18 @@ void qcom_icc_pre_aggregate(struct icc_n
- {
- size_t i;
- struct qcom_icc_node *qn;
-+ struct qcom_icc_provider *qp;
-
- qn = node->data;
-+ qp = to_qcom_provider(node->provider);
-
- for (i = 0; i < QCOM_ICC_NUM_BUCKETS; i++) {
- qn->sum_avg[i] = 0;
- qn->max_peak[i] = 0;
- }
-+
-+ for (i = 0; i < qn->num_bcms; i++)
-+ qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]);
- }
- EXPORT_SYMBOL_GPL(qcom_icc_pre_aggregate);
-
-@@ -44,10 +49,8 @@ int qcom_icc_aggregate(struct icc_node *
- {
- size_t i;
- struct qcom_icc_node *qn;
-- struct qcom_icc_provider *qp;
-
- qn = node->data;
-- qp = to_qcom_provider(node->provider);
-
- if (!tag)
- tag = QCOM_ICC_TAG_ALWAYS;
-@@ -67,9 +70,6 @@ int qcom_icc_aggregate(struct icc_node *
- *agg_avg += avg_bw;
- *agg_peak = max_t(u32, *agg_peak, peak_bw);
-
-- for (i = 0; i < qn->num_bcms; i++)
-- qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]);
--
- return 0;
- }
- EXPORT_SYMBOL_GPL(qcom_icc_aggregate);
interconnect-zero-initial-bw-after-sync-state.patch
interconnect-always-call-pre_aggregate-before-aggregate.patch
interconnect-qcom-icc-rpmh-ensure-floor-bw-is-enforced-for-all-nodes.patch
-interconnect-qcom-icc-rpmh-add-bcms-to-commit-list-in-pre_aggregate.patch
drm-i915-correct-sfc_done-register-offset.patch
soc-ixp4xx-qmgr-fix-invalid-__iomem-access.patch
perf-x86-amd-don-t-touch-the-amd64_eventsel_hostonly-bit-inside-the-guest.patch
+++ /dev/null
-From f84f5b6f72e68bbaeb850b58ac167e4a3a47532a Mon Sep 17 00:00:00 2001
-From: Mike Tipton <mdtipton@codeaurora.org>
-Date: Wed, 21 Jul 2021 10:54:32 -0700
-Subject: interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate
-
-From: Mike Tipton <mdtipton@codeaurora.org>
-
-commit f84f5b6f72e68bbaeb850b58ac167e4a3a47532a upstream.
-
-We're only adding BCMs to the commit list in aggregate(), but there are
-cases where pre_aggregate() is called without subsequently calling
-aggregate(). In particular, in icc_sync_state() when a node with initial
-BW has zero requests. Since BCMs aren't added to the commit list in
-these cases, we don't actually send the zero BW request to HW. So the
-resources remain on unnecessarily.
-
-Add BCMs to the commit list in pre_aggregate() instead, which is always
-called even when there are no requests.
-
-Fixes: 976daac4a1c5 ("interconnect: qcom: Consolidate interconnect RPMh support")
-Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
-Link: https://lore.kernel.org/r/20210721175432.2119-5-mdtipton@codeaurora.org
-Signed-off-by: Georgi Djakov <djakov@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/interconnect/qcom/icc-rpmh.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/drivers/interconnect/qcom/icc-rpmh.c
-+++ b/drivers/interconnect/qcom/icc-rpmh.c
-@@ -20,13 +20,18 @@ void qcom_icc_pre_aggregate(struct icc_n
- {
- size_t i;
- struct qcom_icc_node *qn;
-+ struct qcom_icc_provider *qp;
-
- qn = node->data;
-+ qp = to_qcom_provider(node->provider);
-
- for (i = 0; i < QCOM_ICC_NUM_BUCKETS; i++) {
- qn->sum_avg[i] = 0;
- qn->max_peak[i] = 0;
- }
-+
-+ for (i = 0; i < qn->num_bcms; i++)
-+ qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]);
- }
- EXPORT_SYMBOL_GPL(qcom_icc_pre_aggregate);
-
-@@ -44,10 +49,8 @@ int qcom_icc_aggregate(struct icc_node *
- {
- size_t i;
- struct qcom_icc_node *qn;
-- struct qcom_icc_provider *qp;
-
- qn = node->data;
-- qp = to_qcom_provider(node->provider);
-
- if (!tag)
- tag = QCOM_ICC_TAG_ALWAYS;
-@@ -67,9 +70,6 @@ int qcom_icc_aggregate(struct icc_node *
- *agg_avg += avg_bw;
- *agg_peak = max_t(u32, *agg_peak, peak_bw);
-
-- for (i = 0; i < qn->num_bcms; i++)
-- qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]);
--
- return 0;
- }
- EXPORT_SYMBOL_GPL(qcom_icc_aggregate);
interconnect-zero-initial-bw-after-sync-state.patch
interconnect-always-call-pre_aggregate-before-aggregate.patch
interconnect-qcom-icc-rpmh-ensure-floor-bw-is-enforced-for-all-nodes.patch
-interconnect-qcom-icc-rpmh-add-bcms-to-commit-list-in-pre_aggregate.patch
drm-i915-correct-sfc_done-register-offset.patch
soc-ixp4xx-qmgr-fix-invalid-__iomem-access.patch
perf-x86-amd-don-t-touch-the-amd64_eventsel_hostonly-bit-inside-the-guest.patch