Linux PCI subsystem development
 help / color / mirror / Atom feed
* [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe
@ 2026-08-31 13:37 Mrinmay Sarkar
  2026-08-31 14:25 ` sashiko-bot
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Mrinmay Sarkar @ 2026-08-31 13:37 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Bjorn Helgaas
  Cc: linux-arm-msm, linux-pci, linux-kernel, Mrinmay sarkar,
	Krishna Chaitanya Chundru, Rama Krishna, Rashmi A N

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>


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe
  2026-08-31 13:37 [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe Mrinmay Sarkar
@ 2026-08-31 14:25 ` sashiko-bot
  2026-09-03 11:34 ` Manivannan Sadhasivam
  2026-09-03 13:47 ` Manivannan Sadhasivam
  2 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-08-31 14:25 UTC (permalink / raw)
  To: Mrinmay Sarkar; +Cc: linux-pci

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Redundant OF match lookup in latency-sensitive noirq suspend/resume fastpaths
--

commit c4c9a4ee7ca3ece5a2758b2afa96d34b1ed85c1a
Author: Mrinmay Sarkar <mrinmay.sarkar@oss.qualcomm.com>

PCI: qcom: Skip system suspend/resume for firmware-managed PCIe

This commit skips host-managed suspend and resume operations for PCIe
controllers that are managed by firmware. It relies on the generic power
domain framework to handle the necessary transitions instead.

> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> --- 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;

[Severity: Low]
Is this new OF match lookup redundant?

Since qcom_pcie_probe() bypasses setting drvdata for firmware-managed
controllers, dev_get_drvdata() already natively returns NULL for these
devices. The pre-existing check just below this addition handles that:

    pcie = dev_get_drvdata(dev);
    if (!pcie)
        return 0;

Because this executes in the noirq phase where local CPU interrupts are
disabled and latency is critical, does it make sense to avoid the overhead
of of_device_get_match_data() string comparisons and just rely on the
existing NULL check?

>  
>  	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;

[Severity: Low]
Similarly for the resume path, does this introduce unnecessary overhead in
the noirq phase?

The identical dev_get_drvdata() check is present just below this addition,
which already safely catches firmware-managed controllers and returns 0.

>  
>  	pcie = dev_get_drvdata(dev);
>  	if (!pcie)

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260831-skip_suspend-v1-1-ba2d877e22b1@oss.qualcomm.com?part=1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe
  2026-08-31 13:37 [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe Mrinmay Sarkar
  2026-08-31 14:25 ` sashiko-bot
@ 2026-09-03 11:34 ` Manivannan Sadhasivam
  2026-09-03 12:12   ` Mrinmay Sarkar
  2026-09-03 13:47 ` Manivannan Sadhasivam
  2 siblings, 1 reply; 5+ messages in thread
From: Manivannan Sadhasivam @ 2026-09-03 11:34 UTC (permalink / raw)
  To: Mrinmay Sarkar
  Cc: Lorenzo Pieralisi, Krzysztof Wilczyński, Bjorn Helgaas,
	linux-arm-msm, linux-pci, linux-kernel, Krishna Chaitanya Chundru,
	Rama Krishna, Rashmi A N

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

-- 
மணிவண்ணன் சதாசிவம்

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe
  2026-09-03 11:34 ` Manivannan Sadhasivam
@ 2026-09-03 12:12   ` Mrinmay Sarkar
  0 siblings, 0 replies; 5+ messages in thread
From: Mrinmay Sarkar @ 2026-09-03 12:12 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: Lorenzo Pieralisi, Krzysztof Wilczyński, Bjorn Helgaas,
	linux-arm-msm, linux-pci, linux-kernel, Krishna Chaitanya Chundru,
	Rama Krishna, Rashmi A N

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
>
> --
> மணிவண்ணன் சதாசிவம்

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe
  2026-08-31 13:37 [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe Mrinmay Sarkar
  2026-08-31 14:25 ` sashiko-bot
  2026-09-03 11:34 ` Manivannan Sadhasivam
@ 2026-09-03 13:47 ` Manivannan Sadhasivam
  2 siblings, 0 replies; 5+ messages in thread
From: Manivannan Sadhasivam @ 2026-09-03 13:47 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Bjorn Helgaas, Mrinmay Sarkar
  Cc: linux-arm-msm, linux-pci, linux-kernel, Krishna Chaitanya Chundru,
	Rama Krishna, Rashmi A N


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,
-- 
மணிவண்ணன் சதாசிவம்



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-09-03 13:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-31 13:37 [PATCH] PCI: qcom: Skip system suspend/resume for firmware-managed PCIe Mrinmay Sarkar
2026-08-31 14:25 ` sashiko-bot
2026-09-03 11:34 ` Manivannan Sadhasivam
2026-09-03 12:12   ` Mrinmay Sarkar
2026-09-03 13:47 ` Manivannan Sadhasivam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox