[PATCH] PCI: dwc: Proceed with system suspend even if the endpoint doesn't respond with PME_TO_Ack message

Manivannan Sadhasivam posted 1 patch 1 month, 4 weeks ago
There is a newer version of this series
drivers/pci/controller/dwc/pcie-designware-host.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
[PATCH] PCI: dwc: Proceed with system suspend even if the endpoint doesn't respond with PME_TO_Ack message
Posted by Manivannan Sadhasivam 1 month, 4 weeks ago
PCIe spec r7.0, sec 5.3.3.2.1, recommends proceeding with L2/L3 sequence
even if one or devices do not respond with PME_TO_Ack message after 10ms
timeout.

So just print a warning if the timeout happens and proceed with the system
suspend.

Reported-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
---
 drivers/pci/controller/dwc/pcie-designware-host.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
index 6ae6189e9b8a..c01e6cafd255 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -1255,11 +1255,13 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci)
 				val <= DW_PCIE_LTSSM_DETECT_WAIT,
 				PCIE_PME_TO_L2_TIMEOUT_US/10,
 				PCIE_PME_TO_L2_TIMEOUT_US, false, pci);
-	if (ret) {
-		/* Only log message when LTSSM isn't in DETECT or POLL */
-		dev_err(pci->dev, "Timeout waiting for L2 entry! LTSSM: 0x%x\n", val);
-		return ret;
-	}
+	if (ret)
+		/*
+		 * Failure is non-fatal since spec r7.0, sec 5.3.3.2.1,
+		 * recommends proceeding with L2/L3 sequence even if one or more
+		 * devices do not respond with PME_TO_Ack after 10ms timeout.
+		 */
+		dev_warn(pci->dev, "Timeout waiting for L2 entry! LTSSM: 0x%x\n", val);
 
 	/*
 	 * Per PCIe r6.0, sec 5.3.3.2.1, software should wait at least
-- 
2.51.0