From nobody Tue Dec 16 03:10:45 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50AFFC6FA83 for ; Mon, 26 Sep 2022 11:02:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236963AbiIZLCE (ORCPT ); Mon, 26 Sep 2022 07:02:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237347AbiIZK71 (ORCPT ); Mon, 26 Sep 2022 06:59:27 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 952775C9EB; Mon, 26 Sep 2022 03:31:04 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 966B9B80952; Mon, 26 Sep 2022 10:30:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D207FC433D6; Mon, 26 Sep 2022 10:30:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1664188251; bh=3tdsAQP+V8e9ZD4BWk3zNjB2XQAPdWt1dSbmitw3cNI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OXKZmQoWOKG0UvpAS3uViv15WrO4CbmijQzg+SP1enzhb2Ej6DMb522eqQnTLlrXl 2BduczK+nI9Zwc4wdSYk1IuxS952GSp9KBj67Sk3wK+MeNPQsvR4DHEBVbpvpOdwUf jtT+JCWrmQDJnaZURBxTvr57OyUByuEBhCxHOkOU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mike Tipton , Georgi Djakov , Douglas Anderson , Alex Elder Subject: [PATCH 5.10 059/141] interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate Date: Mon, 26 Sep 2022 12:11:25 +0200 Message-Id: <20220926100756.596263294@linuxfoundation.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220926100754.639112000@linuxfoundation.org> References: <20220926100754.639112000@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Mike Tipton commit b95b668eaaa2574e8ee72f143c52075e9955177e 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. Signed-off-by: Mike Tipton [georgi: remove icc_sync_state for platforms with incomplete support] Link: https://lore.kernel.org/r/20211125174751.25317-1-djakov@kernel.org Signed-off-by: Georgi Djakov [dianders: dropped sm8350.c which isn't present in 5.10] Signed-off-by: Douglas Anderson Acked-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- drivers/interconnect/qcom/icc-rpmh.c | 10 +++++----- drivers/interconnect/qcom/sm8150.c | 1 - drivers/interconnect/qcom/sm8250.c | 1 - 3 files changed, 5 insertions(+), 7 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; =20 qn =3D node->data; + qp =3D to_qcom_provider(node->provider); =20 for (i =3D 0; i < QCOM_ICC_NUM_BUCKETS; i++) { qn->sum_avg[i] =3D 0; qn->max_peak[i] =3D 0; } + + for (i =3D 0; i < qn->num_bcms; i++) + qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]); } EXPORT_SYMBOL_GPL(qcom_icc_pre_aggregate); =20 @@ -44,10 +49,8 @@ int qcom_icc_aggregate(struct icc_node * { size_t i; struct qcom_icc_node *qn; - struct qcom_icc_provider *qp; =20 qn =3D node->data; - qp =3D to_qcom_provider(node->provider); =20 if (!tag) tag =3D QCOM_ICC_TAG_ALWAYS; @@ -67,9 +70,6 @@ int qcom_icc_aggregate(struct icc_node * *agg_avg +=3D avg_bw; *agg_peak =3D max_t(u32, *agg_peak, peak_bw); =20 - for (i =3D 0; i < qn->num_bcms; i++) - qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]); - return 0; } EXPORT_SYMBOL_GPL(qcom_icc_aggregate); --- a/drivers/interconnect/qcom/sm8150.c +++ b/drivers/interconnect/qcom/sm8150.c @@ -627,7 +627,6 @@ static struct platform_driver qnoc_drive .driver =3D { .name =3D "qnoc-sm8150", .of_match_table =3D qnoc_of_match, - .sync_state =3D icc_sync_state, }, }; module_platform_driver(qnoc_driver); --- a/drivers/interconnect/qcom/sm8250.c +++ b/drivers/interconnect/qcom/sm8250.c @@ -643,7 +643,6 @@ static struct platform_driver qnoc_drive .driver =3D { .name =3D "qnoc-sm8250", .of_match_table =3D qnoc_of_match, - .sync_state =3D icc_sync_state, }, }; module_platform_driver(qnoc_driver);