Re: [PATCH 0/7] clk: qcom: gcc: Do not turn off PCIe GDSCs during gdsc_disable()
From: Bryan O'Donoghue
Date: Fri Jan 02 2026 - 11:12:36 EST
On 02/01/2026 13:57, Konrad Dybcio wrote:
On 1/2/26 2:19 PM, Krishna Chaitanya Chundru wrote:
On 1/2/2026 5:09 PM, Konrad Dybcio wrote:
On 1/2/26 12:36 PM, Krishna Chaitanya Chundru wrote:
On 1/2/2026 5:04 PM, Konrad Dybcio wrote:
On 1/2/26 10:43 AM, Krishna Chaitanya Chundru wrote:
With PWRSTS_OFF_ON, PCIe GDSCs are turned off during gdsc_disable(). This
can happen during scenarios such as system suspend and breaks the resume
of PCIe controllers from suspend.
Isn't turning the GDSCs off what we want though? At least during system
suspend?
If we are keeping link in D3cold it makes sense, but currently we are not keeping in D3cold
so we don't expect them to get off.
Since we seem to be tackling that in parallel, it seems to make sense
that adding a mechanism to let the PCIe driver select "on" vs "ret" vs
"off" could be useful for us
At least I am not aware of such API where we can tell genpd not to turn off gdsc
at runtime if we are keeping the device in D3cold state.
But anyway the PCIe gdsc supports Retention, in that case adding this flag here makes
more sense as it represents HW.
sm8450,sm8650 also had similar problem which are fixed by mani[1].
Perhaps I should ask for a clarification - is retention superior to
powering the GDSC off? Does it have any power costs?
In retention you'd expect any/all registers to remain powered, such that
configuration changes persist through your own power state.
So any PLL or other clock marked as critical would require retention as
would any other clock register setting you setup in probe() initially.
TBH should probably have retention on all of the clocks as a default..
FWIW I recall I could turn off the GDSCs on at least makena with the old
suspend patches and the controllers would come back to life afterwards
In the suspend patches, we are keeping link in D3cold, so turning off gdsc will not have any effect.
What do you mean by it won't have any effect?
But if some reason we skipped D3cold like in S2idle case then gdsc should not be off, in that case
in resume PCIe link will be broken.
Right, obviously
Konrad