Re: [PATCH v3 5/5] PCI: qcom: Add D3cold support

From: Krishna Chaitanya Chundru

Date: Mon Apr 06 2026 - 05:08:23 EST




On 3/17/2026 2:45 PM, Konrad Dybcio wrote:
On 3/11/26 11:26 AM, Krishna Chaitanya Chundru wrote:
Add support for transitioning PCIe endpoints & bridges into D3cold by
integrating with the DWC core suspend/resume helpers.

Implement PME_TurnOff message generation via ELBI_SYS_CTRL and hook it
into the DWC host operations so the controller follows the standard
PME_TurnOff-based power-down sequence before entering D3cold.

When the device is suspended into D3cold, fully tear down interconnect
bandwidth, OPP votes. If D3cold is not entered, retain existing behavior
by keeping the required interconnect and OPP votes.

Drop the qcom_pcie::suspended flag and rely on the existing
dw_pcie::suspended state, which now drives both the power-management
flow and the interconnect/OPP handling.

Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@xxxxxxxxxxxxxxxx>
---
[...]

ret = icc_disable(pcie->icc_cpu);
if (ret)
dev_err(dev, "Failed to disable CPU-PCIe interconnect path: %d\n", ret);
if (pcie->use_pm_opp)
dev_pm_opp_set_opp(pcie->pci->dev, NULL);
Does calling .suspend not drop the vote by itself?
No, unlike genpd framework for power domains, opp votes will not removed as part of suspend.

- Krishna Chaitanya.
[...]

@@ -2132,25 +2138,46 @@ static int qcom_pcie_resume_noirq(struct device *dev)
Similarly, I'd expect that .resume restores it (and you didn't do it manually)

Konrad