Commit 91b44981 authored by Georgi Djakov's avatar Georgi Djakov Committed by Greg Kroah-Hartman
Browse files

interconnect: Do not skip aggregation for disabled paths



When an interconnect path is being disabled, currently we don't aggregate
the requests for it afterwards. But the re-aggregation step shouldn't be
skipped, as it may leave the nodes with outdated bandwidth data. This
outdated data may actually keep the path still enabled and prevent the
device from going into lower power states.

Reported-by: default avatarAtul Dhudase <adhudase@codeaurora.org>
Fixes: 7d374b20 ("interconnect: Add helpers for enabling/disabling a path")
Reviewed-by: default avatarSibi Sankar <sibis@codeaurora.org>
Tested-by: default avatarAtul Dhudase <adhudase@codeaurora.org>
Reviewed-by: default avatarAtul Dhudase <adhudase@codeaurora.org>
Link: https://lore.kernel.org/r/20200721120740.3436-1-georgi.djakov@linaro.org


Signed-off-by: default avatarGeorgi Djakov <georgi.djakov@linaro.org>
Link: https://lore.kernel.org/r/20200723083735.5616-2-georgi.djakov@linaro.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b34e7e29
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -243,6 +243,7 @@ static int aggregate_requests(struct icc_node *node)
{
	struct icc_provider *p = node->provider;
	struct icc_req *r;
	u32 avg_bw, peak_bw;

	node->avg_bw = 0;
	node->peak_bw = 0;
@@ -251,9 +252,14 @@ static int aggregate_requests(struct icc_node *node)
		p->pre_aggregate(node);

	hlist_for_each_entry(r, &node->req_list, req_node) {
		if (!r->enabled)
			continue;
		p->aggregate(node, r->tag, r->avg_bw, r->peak_bw,
		if (r->enabled) {
			avg_bw = r->avg_bw;
			peak_bw = r->peak_bw;
		} else {
			avg_bw = 0;
			peak_bw = 0;
		}
		p->aggregate(node, r->tag, avg_bw, peak_bw,
			     &node->avg_bw, &node->peak_bw);
	}