Re: [PATCH v2 4/4] interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate

From: Mike Tipton
Date: Wed Aug 18 2021 - 00:43:32 EST

On 8/10/2021 5:18 PM, Bjorn Andersson wrote:
On Tue 10 Aug 18:31 CDT 2021, Stephen Boyd wrote:

Quoting Mike Tipton (2021-07-21 10:54:32)
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@xxxxxxxxxxxxxx>

This patch breaks reboot for me on sc7180 Lazor

FWIW, it prevents at least SM8150 from booting (need to check my other
boards as well), because its no longer okay to have the interconnect
providers defined without having all client paths specified.

My testing was limited to sdm845, which didn't show any boot issues. But it's not terribly surprising for this to cause problems on some targets. Previously every node was enabled by default and left on permanently if nobody explicitly voted for them. This would happen even if these nodes weren't enabled in bootloaders, since most of the qcom providers aren't defining a get_bw() callback and thus the framework defaults init_avg/init_peak to INT_MAX. So any drivers relying on this default-on behavior would break.

We can try to get dumps of the NOC error registers at the time of failure to pinpoint the problematic access. Or we could try to narrow it down by marking more BCMs as keepalive. If they're marked as keepalive then we won't let them turn off even with this patch.