mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: yoxcu <mick@yoxcu.de>
To: Georgi Djakov <djakov@kernel.org>
Cc: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Michael Auer <mick@yoxcu.de>
Subject: [PATCH RFC 0/2] interconnect: qcom: sdm845: Drop the bootloader vote on ALC
Date: Tue, 13 Oct 2026 22:26:09 +0200	[thread overview]
Message-ID: <20261013202611.3070778-1-mick@yoxcu.de> (raw)

From: Michael Auer <mick@yoxcu.de>

On sdm845 the bootloader can leave a vote on the ALC BCM. No icc node
uses this BCM, so Linux never writes it and the vote stays in force
through sleep: the SoC never reaches CX collapse or AOSS sleep. Found
on a OnePlus 6 (rpmh_read() of ALC on the APPS DRV returns 0x2000000f).

This RFC adds a node without consumers on mem_noc that owns the ALC
BCM, so the provider drops the vote at sync_state like for any other
BCM. The node needs a new ID in the dt-bindings header. Android's
sdm845 bus DT has ALC as a node on mc_virt. Mainline has no mc_virt,
so the node goes on mem_noc next to ACV and MC0.

On icc-next the provider reads the boot vote back
(qcom_icc_bcm_get_bw()). The vote seen here has y = 0xf, so with
enable_mask BIT(0) the node keeps an initial vote until sync_state and
then votes 0. A boot vote with bit 0 clear would not be seen and would
stay. GENMASK(3, 0) would match the vote seen here; I do not know
which value ALC expects.

Questions:
- Is a node without consumers and a new binding ID acceptable for
  this? No other qcom icc driver models ALC.
- Or should the node use a driver-local index past the binding IDs,
  so the header is not touched?
- Or should the bcm-voter clear bootloader votes on BCMs that no node
  owns? It has no list of such BCMs, and cmd-db has no API to list
  them.

Tested on a OnePlus 6 with an sdm845-mainline 7.1-rc1 based kernel.
That kernel has no vote read-back, so the node started at INT_MAX:
ALC was voted with y = 1 until sync_state and 0 after it. ALC reads 0
after boot and suspend reaches CX collapse (qcom_stats cxsd counts).
The average current in an idle push standby test (Wi-Fi on) was
35.6 mA, against 43.7 mA with the ALC vote kept in the sleep set. With
ALC off in all sets the phone has been in daily use for two weeks with
no side effects seen. On icc-next both patches were only build tested
(W=1).

This is my first kernel submission, feedback on the process is welcome.

Michael Auer (2):
  dt-bindings: interconnect: qcom,sdm845: Add MASTER_ALC
  interconnect: qcom: sdm845: Own the ALC BCM to drop its boot vote

 drivers/interconnect/qcom/sdm845.c             | 17 +++++++++++++++++
 include/dt-bindings/interconnect/qcom,sdm845.h |  1 +
 2 files changed, 18 insertions(+)


base-commit: 3fd56a2833c22f62eb84297d0dbd47739632f1a0
-- 
2.43.0


             reply	other threads:[~2026-10-13 20:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-13 20:26 yoxcu [this message]
2026-10-13 20:26 ` [PATCH RFC 1/2] dt-bindings: interconnect: qcom,sdm845: Add MASTER_ALC yoxcu
2026-10-13 20:26 ` [PATCH RFC 2/2] interconnect: qcom: sdm845: Own the ALC BCM to drop its boot vote yoxcu
2026-10-19 12:22 ` [PATCH RFC 0/2] interconnect: qcom: sdm845: Drop the bootloader vote on ALC Konrad Dybcio
2026-10-23 20:02   ` Michael Auer

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=20261013202611.3070778-1-mick@yoxcu.de \
    --to=mick@yoxcu.de \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=djakov@kernel.org \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=robh@kernel.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®