On Wed, Oct 21, 2026 at 08:42:26PM +0300, Dmitry Baryshkov wrote:
> Do you have any extra patches that you are running with? I don't think
> that currently Linux can hit system power collapse with the GPU still
> running.

Yes, a series not yet sent that adds SDM630's system-level idle state
(cluster and system power domains in PSCI OSI mode, and the MPM). The
stall needs that state, so on mainline this patch prevents nothing. I
briefly mentioned it in the cover letter.

> On SDM630 the GPU is running from the CX, but we don't vote on it (yet).
> With the CPUs awake we keep a vote on CX. With the cores going to the
> deep sleep, the CX might drop below the required leven, causing GPU to
> die.
[...]
> Could you please check what actually stops in your setup (CX corner, the
> BIMC vote, XO)? I think the proper fix is for the GPU to vote its real
> rail, scaled per OPP, in both RPM sets, rather than keeping the CPUs out
> of their idle states.

The GPU doesn't die: it pauses for as long as the SoC is in the system
state, and the job completes once the SoC leaves it. The votes don't
change that. I tested them with the latency request off and on:

- XO: the GPU clock controller using RPM_SMD_XO_CLK_SRC
- CX: the GPU clock controller voting RPMPD_VDDCX at TURBO
- MX: every GPU OPP at TURBO
- BIMC: every GPU OPP at the maximum peak bandwidth

Each was read back from debugfs during the run, in both sets. Hang
detections in jobs, two runs with the request off:

                        request off        request on
  as is                 207/483  216/483   0/500
  CX                    192/488  194/485   0/499
  XO                    188/487  188/483   0/499
  CX + XO + BIMC        180/487  185/488   0/499
  CX + XO + BIMC + MX   199/494  208/487   0/498

I don't know why it pauses, but downstream keeps the SoC out of that
state while the GPU is active, with qcom,pm-qos-active-latency.

You're right about the CPUs' idle states, though: with sdm630.dtsi's
values, 424 us keeps every CPU out of power collapse while the GPU is
powered. Only the system state needs blocking: at 2336 us, which leaves
every CPU and cluster state available, the same test gives no hang
detections.

Reply via email to