From: Mike Tipton <mdtipton@codeaurora.org>
To: Odelu Kukatla <okukatla@codeaurora.org>,
georgi.djakov@linaro.org, bjorn.andersson@linaro.org,
evgreen@google.com, Georgi Djakov <djakov@kernel.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: sboyd@kernel.org, sibis@codeaurora.org, saravanak@google.com,
seansw@qti.qualcomm.com, elder@linaro.org,
linux-arm-msm@vger.kernel.org,
linux-arm-msm-owner@vger.kernel.org
Subject: Re: [PATCH] interconnect: Aggregate bandwidth votes for unused nodes in sync_state()
Date: Fri, 25 Jun 2021 14:20:34 -0700 [thread overview]
Message-ID: <f93ad53b-f413-f8dc-2068-2c217cbed543@codeaurora.org> (raw)
In-Reply-To: <1624122509-17508-1-git-send-email-okukatla@codeaurora.org>
On 6/19/2021 10:08 AM, Odelu Kukatla wrote:
> When removing the initial bandwidth votes in sync_state(), make sure
> to call the aggregate() function for nodes which don't have any
> clients yet. aggregate_requests() does not invoke aggregate()
> for unused nodes.
>
> Signed-off-by: Odelu Kukatla <okukatla@codeaurora.org>
> ---
> drivers/interconnect/core.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
> index 8a1e70e..1d9a00a 100644
> --- a/drivers/interconnect/core.c
> +++ b/drivers/interconnect/core.c
> @@ -1106,7 +1106,16 @@ void icc_sync_state(struct device *dev)
> dev_dbg(p->dev, "interconnect provider is in synced state\n");
> list_for_each_entry(n, &p->nodes, node_list) {
> if (n->init_avg || n->init_peak) {
> - aggregate_requests(n);
> + if (hlist_empty(&n->req_list)) {
> + if (p->pre_aggregate)
> + p->pre_aggregate(n);
> +
> + p->aggregate(n, 0, 0, 0, &n->avg_bw,
> + &n->peak_bw);
> + } else {
> + aggregate_requests(n);
> + }
> +
> p->set(n, n);
> }
> }
>
I ran into this issue myself last week. There is an alternative fix that
I think is a little cleaner. The reason we need the aggregate() call
here is that the icc-rpmh providers only add BCMs to the commit list in
the aggregate() callback. If aggregate() isn't called, then we don't
commit anything to HW. But, if we instead add BCMs to the commit list in
pre_aggregate(), then the existing aggregate_requests() call is
sufficient, since that always calls pre_aggregate() even when req_list
is empty. That means we'd need to update icc_node_add() to call
pre_aggregate() before aggregate(), otherwise we wouldn't commit the
initial floors. But I think always calling pre_aggregate() before
aggregate() is a reasonable requirement.
I've posted these changes in a patch series along with a separate
sync-state-related fix. The solutions could co-exist, but they are
largely redundant.
prev parent reply other threads:[~2021-06-25 21:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-19 17:08 Odelu Kukatla
2021-06-21 16:33 ` Matthias Kaehlcke
2021-06-25 21:20 ` Mike Tipton [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f93ad53b-f413-f8dc-2068-2c217cbed543@codeaurora.org \
--to=mdtipton@codeaurora.org \
--cc=bjorn.andersson@linaro.org \
--cc=djakov@kernel.org \
--cc=elder@linaro.org \
--cc=evgreen@google.com \
--cc=georgi.djakov@linaro.org \
--cc=linux-arm-msm-owner@vger.kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=okukatla@codeaurora.org \
--cc=saravanak@google.com \
--cc=sboyd@kernel.org \
--cc=seansw@qti.qualcomm.com \
--cc=sibis@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®