mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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.


      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®