drivers/pci/controller/dwc/pcie-qcom.c | 8 ++++++++ 1 file changed, 8 insertions(+)
For firmware-managed PCIe controllers, all resources, including clocks,
regulators, resets, PHYs and link state, are owned and managed by
firmware. The host driver must not attempt to manage these resources
during system suspend or resume.
Skip the suspend and resume operations for firmware-managed controllers.
The associated power domain transitions are handled independently by the
genpd framework through its own system suspend/resume callbacks, so no
explicit action is required by the PCIe driver.
Signed-off-by: Mrinmay Sarkar <mrinmay.sarkar@oss.qualcomm.com>
---
Hi,
Firmware-managed PCIe controllers rely on firmware for managing PCIe
resources such as clocks, regulators, resets, PHYs and link state.
Skip the host-managed suspend/resume operations for such controllers.
The associated power-domain transitions are already handled by the
generic power-domain framework during system suspend/resume.
Thanks,
Mrinmay
---
drivers/pci/controller/dwc/pcie-qcom.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index b58a607b713f..56f0d039e36d 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -2341,6 +2341,10 @@ static int qcom_pcie_suspend_noirq(struct device *dev)
{
struct qcom_pcie *pcie;
int ret = 0;
+ const struct qcom_pcie_cfg *pcie_cfg = of_device_get_match_data(dev);
+
+ if (pcie_cfg && pcie_cfg->firmware_managed)
+ return 0;
pcie = dev_get_drvdata(dev);
if (!pcie)
@@ -2399,6 +2403,10 @@ static int qcom_pcie_resume_noirq(struct device *dev)
{
struct qcom_pcie *pcie;
int ret;
+ const struct qcom_pcie_cfg *pcie_cfg = of_device_get_match_data(dev);
+
+ if (pcie_cfg && pcie_cfg->firmware_managed)
+ return 0;
pcie = dev_get_drvdata(dev);
if (!pcie)
---
base-commit: e30626823a406725ce29bc75cb8ec467d3e1e326
change-id: 20260831-skip_suspend-a5bc5b29fb34
Best regards,
--
Mrinmay Sarkar <mrinmay.sarkar@oss.qualcomm.com>
On Mon, 31 Aug 2026 19:07:02 +0530, Mrinmay Sarkar wrote:
> For firmware-managed PCIe controllers, all resources, including clocks,
> regulators, resets, PHYs and link state, are owned and managed by
> firmware. The host driver must not attempt to manage these resources
> during system suspend or resume.
>
> Skip the suspend and resume operations for firmware-managed controllers.
> The associated power domain transitions are handled independently by the
> genpd framework through its own system suspend/resume callbacks, so no
> explicit action is required by the PCIe driver.
>
> [...]
Applied, thanks!
[1/1] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe
commit: 89d17a6331087a76aea1a3a6c03dc45a19d306f2
Best regards,
--
மணிவண்ணன் சதாசிவம்
On Mon, Aug 31, 2026 at 07:07:02PM +0530, Mrinmay Sarkar wrote: > For firmware-managed PCIe controllers, all resources, including clocks, > regulators, resets, PHYs and link state, are owned and managed by > firmware. The host driver must not attempt to manage these resources > during system suspend or resume. > > Skip the suspend and resume operations for firmware-managed controllers. > The associated power domain transitions are handled independently by the > genpd framework through its own system suspend/resume callbacks, so no > explicit action is required by the PCIe driver. > What about the D3Cold sequence like broadcasting PME_Turn_Off? Is it also handled by the fw? - Mani -- மணிவண்ணன் சதாசிவம்
On Thu, Sep 3, 2026 at 5:05 PM Manivannan Sadhasivam <mani@kernel.org> wrote: > > On Mon, Aug 31, 2026 at 07:07:02PM +0530, Mrinmay Sarkar wrote: > > For firmware-managed PCIe controllers, all resources, including clocks, > > regulators, resets, PHYs and link state, are owned and managed by > > firmware. The host driver must not attempt to manage these resources > > during system suspend or resume. > > > > Skip the suspend and resume operations for firmware-managed controllers. > > The associated power domain transitions are handled independently by the > > genpd framework through its own system suspend/resume callbacks, so no > > explicit action is required by the PCIe driver. > > > > What about the D3Cold sequence like broadcasting PME_Turn_Off? Is it also > handled by the fw? > > - Mani Thanks, Mani for the review. Yes. The firmware sends PME_Turn_Off as part of its port deinitialization flow and waits for the link to enter L2/L3 Ready before powering down the controller. -Mrinmay > > -- > மணிவண்ணன் சதாசிவம்
© 2016 - 2026 Red Hat, Inc.