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.
Regards,
Bjorn