From nobody Mon Feb 9 06:19:17 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAFD133C18A; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931266; cv=none; b=dzUiAj229IfHcUJ5wYZyve19OLVa5Oj7oDW1QYAmDg48y1fxTajdNAKH7KIUnntPYbOHmK3OjVImWhltESKeIHCSDXYxpRIaDKz0qibOzcPcTPg8dJrsqDNsaQZhh3jsMrWGvF3AwB+dFjcDuKZ8amwAPmsSz5dGcWGlHSH8mNY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931266; c=relaxed/simple; bh=bgXK6fVCuK9gj2LIP3pQaoqOPFYMwod1nKJ2KQxvZU4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uT/1ksU3OIU+keOVEuLpTBarH+AqZlBcC8dV628G6vnalCMOCJlx8RXq7MfHSdpWIktetSdCXuLCxx/iEK/FrI7OuiTXKIkbr9FfwRbtty1wmpba0HmhyLdGjK9ro1oqj+Wkz3VIWM2gYQ35Zw5rZbUFU/kOgdiMCL6+VoDfY+U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=T9+lyQTe; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="T9+lyQTe" Received: by smtp.kernel.org (Postfix) with ESMTPS id 71D02C19422; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768931266; bh=bgXK6fVCuK9gj2LIP3pQaoqOPFYMwod1nKJ2KQxvZU4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=T9+lyQTeOU87iqrilyOuLURltMW9WYcwCDdihjMK5UjZZZiopcprvkBbfwsAQ3Gom ZkDbG6/P7/pTbRWTKnyZ1xmES+s02h1/X9Id9v9DRAXiaSxB2JH0/49PSry/CzMR9T o6k1hXouPU3ev3MlzRV+pRBaexBDwSNNfVTywdnwDZYKt5q0bxUGIeeLQSGezgTsSm c/OjbDZ4ErGKoQX/tlHuUWguV1Z8s3Jo+5K3xt5yXDzPHTlcr6R7AhVPnsGimV499y +gJ+8YVovASC8FhWpsgl/+4ZCajz/j5dXeJIrad/2k3mVLRHVMmDE2HtUVU8PrfmTa 6q/k/hKzTRjCA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5CF94CA5FBA; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 20 Jan 2026 23:17:40 +0530 Subject: [PATCH v4 1/5] PCI: dwc: Return -ENODEV from dw_pcie_wait_for_link() if device is not found Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260120-pci-dwc-suspend-rework-v4-1-2f32d5082549@oss.qualcomm.com> References: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> In-Reply-To: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, vincent.guittot@linaro.org, zhangsenchuan@eswincomputing.com, Shawn Lin , Niklas Cassel , Richard Zhu , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2301; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=aJ16lo8KOnS7CZMNjxJ6dxKG/LnfuQvAluvyn1kC0vE=; b=kA0DAAoBVZ8R5v6RzvUByyZiAGlvv8CgxblkdAyDYscd9q9adYM640nDPnRHODrmi7qiuDMiy okBMwQAAQoAHRYhBGelQyqBSMvYpFgnl1WfEeb+kc71BQJpb7/AAAoJEFWfEeb+kc71M0MH/36d qBkUfw0KE3+UDas9zSZvc68cM3HBU/yD8HTu/XNaCsfEQhF4smqFIrNAkYgbpyYa3xkCH3BUfDk szYdnqV1ctxPtal9p5yJWAEkd3lEKWhhFtx1EUJZrnKD+BC684GFWEXqH78PP5+zNBFejIIT5SA VpS8qEKLRMNNwJc0DD4jW8VU7GaRFnrNX+fn4QXviXraJIK8UpRV7jQpreIpo1T8PO+/gh4+k75 zEXro/2gsQcbQlstByrSROw/SZ6EmqnS0a/twlXaAVWttnZC/u2k1WrOGbDlVbUicmllRcxfxZd w2vD2SmWXaRmIfCu4uEvE226KsOEAg8M2WFfPNw= X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam The dw_pcie_wait_for_link() function waits up to 1 second for the PCIe link to come up and returns -ETIMEDOUT for all failures without distinguishing cases where no device is present on the bus. But the callers may want to just skip the failure if the device is not found on the bus and handle failure for other reasons. So after timeout, if the LTSSM is in Detect.Quiet or Detect.Active state, return -ENODEV to indicate the callers that the device is not found on the bus and return -ETIMEDOUT otherwise. Also add kernel doc to document the parameter and return values. Tested-by: Richard Zhu Tested-by: Vincent Guittot Reviewed-by: Shawn Lin Signed-off-by: Manivannan Sadhasivam Reviewed-by: Niklas Cassel --- drivers/pci/controller/dwc/pcie-designware.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index 345365ea97c7..55c1c60f7f8f 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -692,9 +692,16 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir,= int index) dw_pcie_writel_atu(pci, dir, index, PCIE_ATU_REGION_CTRL2, 0); } =20 +/** + * dw_pcie_wait_for_link - Wait for the PCIe link to be up + * @pci: DWC instance + * + * Returns: 0 if link is up, -ENODEV if device is not found, -ETIMEDOUT if= the + * link fails to come up for other reasons. + */ int dw_pcie_wait_for_link(struct dw_pcie *pci) { - u32 offset, val; + u32 offset, val, ltssm; int retries; =20 /* Check if the link is up or not */ @@ -706,6 +713,17 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci) } =20 if (retries >=3D PCIE_LINK_WAIT_MAX_RETRIES) { + /* + * If the link is in Detect.Quiet or Detect.Active state, it + * indicates that no device is detected. + */ + ltssm =3D dw_pcie_get_ltssm(pci); + if (ltssm =3D=3D DW_PCIE_LTSSM_DETECT_QUIET || + ltssm =3D=3D DW_PCIE_LTSSM_DETECT_ACT) { + dev_info(pci->dev, "Device not found\n"); + return -ENODEV; + } + dev_info(pci->dev, "Phy link never came up\n"); return -ETIMEDOUT; } --=20 2.51.0 From nobody Mon Feb 9 06:19:17 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAF30326D53; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931266; cv=none; b=IBOE4SQNVrYE0piWLI65SvPTfO75FRU6l33bVxGATN2mYZfEmR8FjHRJX9RtuArM1BHrxFKm0xVXtnyj4cuw3MQN1LwU1Ee/ihXcw93ny1x/p9H7g4YrxDdc8aRII6V7K7wM7tPnF+mYAmvrKLKWiXVp7kwavk3uOl26TQvsx10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931266; c=relaxed/simple; bh=o2bc49G4zzjwHJj3X8ryTWNjsLEUfank6fQaGgoABrE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UJvl2SYzsvlLseFMp86FiC/aZKd67cLbbvTYEpA0bKe+Z8Fg0W8+8wDPfr+7nhaQVLfqJGp11Tl79jMiWJfNKL4+TkzJnRo8LolKerPhvr2vbzk4GXwiIAUGheLhLG/Yjtb02QFn1os9Cs0sH/jlJc67q3M8nuJuuS+4Cz5H97k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jc9BbYc3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jc9BbYc3" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7E987C2BC86; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768931266; bh=o2bc49G4zzjwHJj3X8ryTWNjsLEUfank6fQaGgoABrE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jc9BbYc33x1mdUIXXekN8Z5V5vETaj0f2fRXFfOQCJxFTxOOG2suv+fMms89pcH6A PGs2h1xTSWrdH6USEKDIgEq6hh6AZPhE1LbtTeH4g2R5mUi+cA3weR7X/+R+daZ18v Y3hIKjcdRb977L6BjNgRt0yiQMXgTYhxb66l7gegS/B3+ZzCrPtVcWsQmM95aMoDnx GqS7yaCHEU6q2hYsbASnFh+RVqYmvOBZGTbxQyxMhHYF56SHrt5OUsVQ+XhwFX6OIb UBhXt1bOo57S1bichmyzct8gKazdM41AniEY7erUuU67aqTWdPa9i6BTUk2+wquoPJ z6SPisJRpCQ6Q== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B72CCA5FBD; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 20 Jan 2026 23:17:41 +0530 Subject: [PATCH v4 2/5] PCI: dwc: Return -EIO from dw_pcie_wait_for_link() if device is not active Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260120-pci-dwc-suspend-rework-v4-2-2f32d5082549@oss.qualcomm.com> References: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> In-Reply-To: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, vincent.guittot@linaro.org, zhangsenchuan@eswincomputing.com, Shawn Lin , Niklas Cassel , Richard Zhu , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2234; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=lJs2RDxnLG6iq+YlIuSttT/5SGXBjIWrnLIyz20iOiw=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpb7/A0Z/hHcog/Tj52mcEMvbyI30KwG25mDnHY EgKLBn4PYeJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaW+/wAAKCRBVnxHm/pHO 9cDxB/92DSlhtWBAH6buRsxQAx6Dykvjva6+MO7NInFxA63xXOUb3f6ouifoWUrh4vEYQd1Z2WQ ynshL9xbNpxxTeqJD3GAUGljVOreDusYW6UKaRE8TsOu+AgpbMvG922Wxi86//lTz+59vuM2svk 9xMQpmr8C6xAhqLatkD2BieP4xs3RizxVZX5YH9J7ZcZ6tjSMbiemYjorfyoP1vC8AMjntoztP4 62c9K8m3XS4tl9A8NucNx1P6UQFZSQ2HvP6i7KWScwlPMqsulVN1u9Rwpx/skSR18hvPaagn19+ WqfYVOPGi3gFn3n1SCneC6+GZK87qcwKBFHnpAqqgdNjakGe X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam There are cases where the PCIe device would be physically connected to the bus, but the device firmware might not be active. So the LTSSM will get stuck in POLL.{Active/Compliance} states. This behavior is common with endpoint devices controlled by the PCI Endpoint framework, where the device will wait for the user to start its operation through configfs. For those cases, print the relevant log and return -EIO to indicate that the device is present, but not active. This will allow the callers to skip the failure as the device might become active in the future. Signed-off-by: Manivannan Sadhasivam Reviewed-by: Niklas Cassel --- drivers/pci/controller/dwc/pcie-designware.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index 55c1c60f7f8f..aca5bbeade03 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -696,8 +696,9 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir, = int index) * dw_pcie_wait_for_link - Wait for the PCIe link to be up * @pci: DWC instance * - * Returns: 0 if link is up, -ENODEV if device is not found, -ETIMEDOUT if= the - * link fails to come up for other reasons. + * Returns: 0 if link is up, -ENODEV if device is not found, -EIO if the d= evice + * is found but not active and -ETIMEDOUT if the link fails to come up for= other + * reasons. */ int dw_pcie_wait_for_link(struct dw_pcie *pci) { @@ -722,6 +723,16 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci) ltssm =3D=3D DW_PCIE_LTSSM_DETECT_ACT) { dev_info(pci->dev, "Device not found\n"); return -ENODEV; + + /* + * If the link is in POLL.{Active/Compliance} state, then the + * device is found to be connected to the bus, but it is not + * active i.e., the device firmware might not yet initialized. + */ + } else if (ltssm =3D=3D DW_PCIE_LTSSM_POLL_ACTIVE || + ltssm =3D=3D DW_PCIE_LTSSM_POLL_COMPLIANCE) { + dev_info(pci->dev, "Device found, but not active\n"); + return -EIO; } =20 dev_info(pci->dev, "Phy link never came up\n"); --=20 2.51.0 From nobody Mon Feb 9 06:19:17 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6DE63D7D6D; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931267; cv=none; b=cUCxY0ZMJ5eGjlHZ49soZ9ipPumEyjilIShjtkg0F8fPb5WdPV/Jb5j7ZUDj5G0fYqcCHBBQfoH4DJbpbpsCdIVRWDDneFsRmQrNbsZ9Q6wR6B6sjNiahzyAVYhXyFFCG5DOjsZR2mWo++xyR6Z0eXnY/RdbKbqIYAjUrW21ae8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931267; c=relaxed/simple; bh=C8nwED4p1cQ2wtMW2HPS1mPsc14tf99b6gRgPOBZGhQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QCyfMzYbhVQR5CJl7g3Lcnm8NPJUhbXYvsC8BP30wgSVbhqhr6cLAw2S1fRogpnpIN6U2PIPrWXZ5vFrsney2tO7vYKECNrKkpi2qtxNo9bYcYEscp7itrUQQWZyOnDQeme50iKZ061jnVKpKsDPWRk9J1sZImRTLBeKEQZoklI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mWAxiFZv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mWAxiFZv" Received: by smtp.kernel.org (Postfix) with ESMTPS id 856EDC2BCAF; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768931266; bh=C8nwED4p1cQ2wtMW2HPS1mPsc14tf99b6gRgPOBZGhQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=mWAxiFZv/d/qCj05by6uszliClNF7jzh/NWbTZzKdy1LIv8jcj+qeuSA5K/71adRM xYa/+szlpKcDD6K7ts8C3mO5OqcVUvk/0pzdeglo/WKvCG87vuNVaUqgrhnmkIl1pq pl0kdLqI1a43fpDL1yVuDxpBQ7kCoTlReH3n8+6ExcaFkSPvcLeG3Q5/FFOc7Joo/m IwDQoNmRAcJy0ERbwPeGfUkNfBHjlSuMX9OJFgmQVJ9K+obXS5bvV4wyLh15RESibi RThmudTsN4qdQvy6WrM5nZNqLoVpoZ8kaQ/f0nAplAbCIX728t026Jd0sJ1h+ncmSV 5tbWTQKThXO7A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A8CCCA5FBE; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 20 Jan 2026 23:17:42 +0530 Subject: [PATCH v4 3/5] PCI: dwc: Rename and move ltssm_status_string() to pcie-designware.c Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260120-pci-dwc-suspend-rework-v4-3-2f32d5082549@oss.qualcomm.com> References: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> In-Reply-To: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, vincent.guittot@linaro.org, zhangsenchuan@eswincomputing.com, Shawn Lin , Niklas Cassel , Richard Zhu , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6978; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=YDcMfZz0icBe3ieaYn+20aXeuIU9BKHrj3OGQbzLjOQ=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpb7/AUlbm0wVqExuah7B3N+NH3EttQxeg403X6 LHSQaTe/vOJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaW+/wAAKCRBVnxHm/pHO 9WSiB/93jurdvVLnoevl7Xz6tf0SPOFErzpnHYES6i7GZQucbxnreTXd10r980FhFlQg1q/LQVM qohFO7vj8n9Pschc9ONITmJkKyuz6WOPtyFH3cRhb2CSZ/f+mHgSmEIQ/98rdiMdSZ1nVpnbz7U Txf+nQORthLB1bcFaOd3Lxdp1mhx2/HHus+oXEu6vY2bJYI6Mn6+ud0v+Ci+gJqsGMydi5UAzNE HvSV10e+A0ctKwRLpHiFgPBnBfQx8MMnRVyJz6uXUmkK35aX++2DdarDgZCi3jWEsnnMYWyUYQc +hTP3PSQEWcfIIavcWOE9UzN1cYQaU9SuTvRccASOZzOPFer X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Rename ltssm_status_string() to dw_pcie_ltssm_status_string() and move it to the common file pcie-designware.c so that this function could be used outside of pcie-designware-debugfs.c file. Tested-by: Richard Zhu Tested-by: Vincent Guittot Reviewed-by: Shawn Lin Signed-off-by: Manivannan Sadhasivam Reviewed-by: Niklas Cassel --- .../pci/controller/dwc/pcie-designware-debugfs.c | 54 +-----------------= ---- drivers/pci/controller/dwc/pcie-designware.c | 52 ++++++++++++++++++= +++ drivers/pci/controller/dwc/pcie-designware.h | 2 + 3 files changed, 55 insertions(+), 53 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-debugfs.c b/drivers= /pci/controller/dwc/pcie-designware-debugfs.c index df98fee69892..0d1340c9b364 100644 --- a/drivers/pci/controller/dwc/pcie-designware-debugfs.c +++ b/drivers/pci/controller/dwc/pcie-designware-debugfs.c @@ -443,65 +443,13 @@ static ssize_t counter_value_read(struct file *file, = char __user *buf, return simple_read_from_buffer(buf, count, ppos, debugfs_buf, pos); } =20 -static const char *ltssm_status_string(enum dw_pcie_ltssm ltssm) -{ - const char *str; - - switch (ltssm) { -#define DW_PCIE_LTSSM_NAME(n) case n: str =3D #n; break - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DETECT_QUIET); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DETECT_ACT); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_POLL_ACTIVE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_POLL_COMPLIANCE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_POLL_CONFIG); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_PRE_DETECT_QUIET); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DETECT_WAIT); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LINKWD_START); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LINKWD_ACEPT); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LANENUM_WAI); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LANENUM_ACEPT); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_COMPLETE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_IDLE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_LOCK); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_SPEED); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_RCVRCFG); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_IDLE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L0); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L0S); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L123_SEND_EIDLE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L1_IDLE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L2_IDLE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L2_WAKE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DISABLED_ENTRY); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DISABLED_IDLE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DISABLED); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_ENTRY); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_ACTIVE); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_EXIT); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_EXIT_TIMEOUT); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_HOT_RESET_ENTRY); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_HOT_RESET); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ0); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ1); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ2); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ3); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L1_1); - DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L1_2); - default: - str =3D "DW_PCIE_LTSSM_UNKNOWN"; - break; - } - - return str + strlen("DW_PCIE_LTSSM_"); -} - static int ltssm_status_show(struct seq_file *s, void *v) { struct dw_pcie *pci =3D s->private; enum dw_pcie_ltssm val; =20 val =3D dw_pcie_get_ltssm(pci); - seq_printf(s, "%s (0x%02x)\n", ltssm_status_string(val), val); + seq_printf(s, "%s (0x%02x)\n", dw_pcie_ltssm_status_string(val), val); =20 return 0; } diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index aca5bbeade03..f74eae79cca4 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -692,6 +692,58 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir,= int index) dw_pcie_writel_atu(pci, dir, index, PCIE_ATU_REGION_CTRL2, 0); } =20 +const char *dw_pcie_ltssm_status_string(enum dw_pcie_ltssm ltssm) +{ + const char *str; + + switch (ltssm) { +#define DW_PCIE_LTSSM_NAME(n) case n: str =3D #n; break + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DETECT_QUIET); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DETECT_ACT); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_POLL_ACTIVE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_POLL_COMPLIANCE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_POLL_CONFIG); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_PRE_DETECT_QUIET); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DETECT_WAIT); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LINKWD_START); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LINKWD_ACEPT); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LANENUM_WAI); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_LANENUM_ACEPT); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_COMPLETE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_CFG_IDLE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_LOCK); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_SPEED); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_RCVRCFG); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_IDLE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L0); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L0S); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L123_SEND_EIDLE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L1_IDLE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L2_IDLE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L2_WAKE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DISABLED_ENTRY); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DISABLED_IDLE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_DISABLED); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_ENTRY); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_ACTIVE); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_EXIT); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_LPBK_EXIT_TIMEOUT); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_HOT_RESET_ENTRY); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_HOT_RESET); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ0); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ1); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ2); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_RCVRY_EQ3); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L1_1); + DW_PCIE_LTSSM_NAME(DW_PCIE_LTSSM_L1_2); + default: + str =3D "DW_PCIE_LTSSM_UNKNOWN"; + break; + } + + return str + strlen("DW_PCIE_LTSSM_"); +} + /** * dw_pcie_wait_for_link - Wait for the PCIe link to be up * @pci: DWC instance diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/con= troller/dwc/pcie-designware.h index f87c67a7a482..c1def4d9cf62 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -828,6 +828,8 @@ static inline enum dw_pcie_ltssm dw_pcie_get_ltssm(stru= ct dw_pcie *pci) return (enum dw_pcie_ltssm)FIELD_GET(PORT_LOGIC_LTSSM_STATE_MASK, val); } =20 +const char *dw_pcie_ltssm_status_string(enum dw_pcie_ltssm ltssm); + #ifdef CONFIG_PCIE_DW_HOST int dw_pcie_suspend_noirq(struct dw_pcie *pci); int dw_pcie_resume_noirq(struct dw_pcie *pci); --=20 2.51.0 From nobody Mon Feb 9 06:19:17 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6E9B427A07; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931267; cv=none; b=ZwS5cf8ui5GtHGcn4FnJ4PYIBYd0npqsvMKe2N6io2Mq73Q6Mrk0/uE65G0+Fn1f0cyJTUCGyPiQVf5xln8VjQZJETSbCtlrKPaCVqpZFYAdtoOh/IkQEP33u+UnsWL3eaTW/L8qDSKJL23d4YFiWEF7DJJExU9ozUn36VnQOoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931267; c=relaxed/simple; bh=1/PzY7KxBW6zbghIwRGPBP9Wm59bz5ElxYnTm8vmZPQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CHuFWaUVbHzuhYXBaInuVI+kd37qCNea1722SWuPMh8ca8RU+qh0HBuoT/Bq9ZaHMn0Ui8iLCPnujgdi8CiO+2hdAxoRlNFyvv4Fsy69hKsD+m2O5f0qYqNhTZTSr3lgeU8COccsMFf4CxGB2XTUk50fcAO5njCZFnTQ1EFa5kw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P0WiK++a; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P0WiK++a" Received: by smtp.kernel.org (Postfix) with ESMTPS id 939DFC2BCB2; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768931266; bh=1/PzY7KxBW6zbghIwRGPBP9Wm59bz5ElxYnTm8vmZPQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=P0WiK++aT2XJnN7Mi024xICPANWnRVIpQQ60JqkA1FkZPo/8PebmOf3pf3RMU/Dvl gHMYJi92TW/q1Zn5l9zzeJfrBlKnlTJhXT6D0O+zCxgFuNsYgE3oKdEVZ9i2RtP8k9 6FVGCRVCIMQM4KRMJ8B2qiDMcqArhD+sF5IBSegFemY5NAezzCQGiMnCn/Z+q5UvMq TAhsxxoKMbqW2qiqtF87smsIxLHIbtqayCUIxywq4qOlkK3HyNmMpSazni0XzIkhO+ dGYIHaGKCGl5xh8CtEMkrKM0nnIXQUCVF3M8wJmQYrNcaSK6bv65R0dkEgAjPFCEHN kMEVGE6exQsug== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B0B2CA5FC1; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 20 Jan 2026 23:17:43 +0530 Subject: [PATCH v4 4/5] PCI: dwc: Rework the error print of dw_pcie_wait_for_link() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260120-pci-dwc-suspend-rework-v4-4-2f32d5082549@oss.qualcomm.com> References: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> In-Reply-To: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, vincent.guittot@linaro.org, zhangsenchuan@eswincomputing.com, Shawn Lin , Niklas Cassel , Richard Zhu , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1220; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=Rybke+Ur+gqq01x6BcV5V2xkaSwi4rJ9Q7iHSJqNsh0=; b=owGbwMvMwMUYOl/w2b+J574ynlZLYsjM338gqCWV5XC1qfOXGMYLN5nOZ65fOn/7/AZRtpX2i YnCmflenYzGLAyMXAyyYoos6UudtRo9Tt9YEqE+HWYQKxPIFAYuTgGYyLf17H+FzJhuNidPbUxo yr67LEHtWWOsoZGDsI8bb5bBi7ynXJq5XhXvvIpzNHf9tQiW3Xfr4A0xnVOrl+r5VB8VNXkxMbX lY5dySvwlk4S9b50OJHHtq6xuV1ge6e+n77OJ+ek225OZ9gZNa6ON6owatRdr+AUKzZx31eAwy7 +beZnMk9Xux83cvFWMgVMhySxkfuh37fnlKyMSH3i71ZTecLJ8E1ufuFf7c4xceM+UKv6TTRzLu iyeCOs0uNax/bK1yEubvYKrNqfpWA23M6ei/TGH9WEH/cTWVRea361Yt052apacwfSKyjkBhvtY GZgbJk9dfFU99da5GQbPtn1Wfml6uoHT/1ykz6b5icEA X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam If the link fails to come up even after detecting the device on the bus i.e., if the LTSSM is not in Detect.Quiet and Detect.Active states, then dw_pcie_wait_for_link() should log it as an error. So promote dev_info() to dev_err(), reword the error log to make it clear and also print the LTSSM state to aid debugging. Tested-by: Richard Zhu Tested-by: Vincent Guittot Reviewed-by: Shawn Lin Signed-off-by: Manivannan Sadhasivam Reviewed-by: Niklas Cassel --- drivers/pci/controller/dwc/pcie-designware.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index f74eae79cca4..2fa9f6ee149e 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -787,7 +787,8 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci) return -EIO; } =20 - dev_info(pci->dev, "Phy link never came up\n"); + dev_err(pci->dev, "Link failed to come up. LTSSM: %s\n", + dw_pcie_ltssm_status_string(ltssm)); return -ETIMEDOUT; } =20 --=20 2.51.0 From nobody Mon Feb 9 06:19:17 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07E8D43C059; Tue, 20 Jan 2026 17:47:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931267; cv=none; b=Ln2qVT5fXcbjTnkH0CGYuazE8Oj0egyoVHKw3ZiL3iLpf8+kpY8i5NcsC7Vv9Tupep5qqmi+sqdGo/gTNM9AeYafsim6HsID7G8h23HyVWo1Aj1hHFcac+OnypjoU5mt5dSGIWMPUyv96G1LF8pt8XYNTYRjZsWFzl6hwFC4v8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768931267; c=relaxed/simple; bh=zyCyFEEucX1UpG1LV+i4l3xIDB6N/nLsFMA+4IFCJ2M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RNuO2z+fNxmIvHzOT78FDkujLflxAIeUOnD8EEfztG3lmKI0s8L5lVl7aQGKebxoWQiHDwZ298EJ38lHS6RHfQFH0rxLAnTYHa1zmraQvZQAQoj/J7cGy3Yr5LYHb4KW9gSAtK0rLgZ3xjWfIO5oCgTgJmvft6/iBUkLMwMfNIY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/jsnfDG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/jsnfDG" Received: by smtp.kernel.org (Postfix) with ESMTPS id A0543C2BCB5; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768931266; bh=zyCyFEEucX1UpG1LV+i4l3xIDB6N/nLsFMA+4IFCJ2M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=P/jsnfDGsnenrYZ4mnHSxguJEGu9F0LAkdR68NKuwE7F11XjsKc3OrMJWpE8UldJ8 xvckve1/6N6TYyFdMozQvxe2fuOfwxk2mk8o+RoC6nIo5t3yFJHIMNih7Sw2CyPUcW +y6qp73RGZuKjZHYO7AXNyaVzGBHLUN/P245++gKmOSey7e6yqBZ2SPzBnBVQp7W7n qGmu3PH0ytvnylmB4g/quE8yed1OG7/IavxXHZmAyjybdYmgXHpWNxySfKxwgAZcPc cDAtIY6Kvrs9P/C5+TWSN/cFpIPR1MQpWEayR7YIy8IxYi+KTXf0sH+D/01MdzBHai xYGtyEEWlAM6w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 98EA7CA5FBD; Tue, 20 Jan 2026 17:47:46 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 20 Jan 2026 23:17:44 +0530 Subject: [PATCH v4 5/5] PCI: dwc: Fail dw_pcie_host_init() if dw_pcie_wait_for_link() returns -ETIMEDOUT Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260120-pci-dwc-suspend-rework-v4-5-2f32d5082549@oss.qualcomm.com> References: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> In-Reply-To: <20260120-pci-dwc-suspend-rework-v4-0-2f32d5082549@oss.qualcomm.com> To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, vincent.guittot@linaro.org, zhangsenchuan@eswincomputing.com, Shawn Lin , Niklas Cassel , Richard Zhu , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1459; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=qQ9TgqyVy5+ZTMoD8oCUDVOXgBhw/z7F/8O2CrsfxGk=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpb7/ApmJnuN5uPTosvZeuM/G6OR1nnq7vDyZvz i8+w4UuP3KJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaW+/wAAKCRBVnxHm/pHO 9do2B/4iXc3dd2qBrw5IsFyIssJUCFEvU7mpL7O8sXt23kvxu57GexIV5okRsT3/prQX11SZVQq jkkNZkfQ3aJStFEcIrBEWeI39UjAnDhAhYf3Zx/uKXq7eGvTzLBkN1OLEKHD8y2i6k3Exiz0vA6 ByA+pK+IuGVrV6eCAKfrpyjm/hL/HklwePmncueNp1SuKHH1X6PU0sr04ZwfjriGk4nhT2eQPa9 TPuPmKWjN4pgjsL8wZyePT+qcB18cNJx/K98qJq97H66NjY7QPYYizLY3ElS5pB0tqnIdagD15Q laDIpfBoa3v9NVGsd/2gHGl0hjDXjlqHHZr/gqjM5iZeGcW7 X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam The dw_pcie_wait_for_link() API now distinguishes link failures more precisely: -ENODEV: Device not found on the bus. -EIO: Device found but inactive. -ETIMEDOUT: Link failed to come up. Out of these three errors, only -ETIMEDOUT represents a definitive link failure since it signals that something is wrong with the link. For the other two errors, there is a possibility that the link might come up later. So fail dw_pcie_host_init() if -ETIMEDOUT is returned and skip the failure otherwise. Signed-off-by: Manivannan Sadhasivam Reviewed-by: Niklas Cassel --- drivers/pci/controller/dwc/pcie-designware-host.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pc= i/controller/dwc/pcie-designware-host.c index fad0cbedefbc..a72406ef7e26 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -675,8 +675,13 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) goto err_remove_edma; } =20 - /* Ignore errors, the link may come up later */ - dw_pcie_wait_for_link(pci); + /* + * Only fail on timeout error. Other errors indicate the device may + * become available later, so continue without failing. + */ + ret =3D dw_pcie_wait_for_link(pci); + if (ret =3D=3D -ETIMEDOUT) + goto err_stop_link; =20 ret =3D pci_host_probe(bridge); if (ret) --=20 2.51.0