From nobody Mon Feb 9 20:36:31 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 83D79469D; Tue, 30 Dec 2025 15:07:40 +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=1767107260; cv=none; b=fdYV+onsBQrImzVSeB0wEOz89ydy9jxVWLcdmLDvH470iG8sKdwBPgSmjl36S2coIUpNUCtulAU5gqZV9xjLj0XBKAPm069A6Dz5h/Wn9LAno4z6iHBrC6P0nHw3jzo41OUc47HjEgmWz+FRN6ZjCVa2B6PmmT57BDHWmPTsaSU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767107260; c=relaxed/simple; bh=/HUbHnhoN+KoA7lEL28DWh1/9SAiXUrJsxGb+QY8XV8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qmlVhMbwd01ybE+xtIE5u8nSpjHZdTSHT6QgcNUMSKOsn6iMfH96+7rX8RBhutr4kU2jB+P4EDGDXbOwtJVFH+Pa1fubfLI7yeCAEgK33L5ZCbiG2BeyBF+ZyYD26qb+B56/MfaOTc31pRkUVKNRXQrl5HwpQ+hZAKCey9yCrso= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=u5RiapdL; 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="u5RiapdL" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5A007C116D0; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767107260; bh=/HUbHnhoN+KoA7lEL28DWh1/9SAiXUrJsxGb+QY8XV8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=u5RiapdLhCUne/QaY83DeNFXxtduRA8tCOrZYTVq978FougiI8xXgTuSqMAqC9D9F kUIpCgFYH4/leXUKAYeX2hdJonoNkF4srMJ+W6fwFEIz+bbOeAR2Npig8SeSKwow0j n9r7kd+b+mJTJWoK3yDEOm+k6IraojpSrAGaEQe+mIGA6YUmT6jJ1I6OzrZCeo+ur/ 1nVojvSbYyh9WlhUkktRMV64ZgEaiT7pT4Nn0REmVnL5JTkFOVj9gz3u6ZUTDWwYyl HD7zqImMCl5Pko5kfqy6MxbPFpyj0TvfpjF2uWongRmSfIkY8RAZy+U5Gp4omrIgf7 5ckpj88l8Ow1g== 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 4A375EE020B; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 30 Dec 2025 20:37:32 +0530 Subject: [PATCH v3 1/4] 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: <20251230-pci-dwc-suspend-rework-v3-1-40cd485714f5@oss.qualcomm.com> References: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@oss.qualcomm.com> In-Reply-To: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@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 , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2146; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=o/5Daxo7XavRGG4F5ekAsfAm4FYtHGKP45ahA68HQwY=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpU+q6HyUDt0e1k2DFsbbs6mTkEAPW0Jk16w1kU I84qWb3OiWJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaVPqugAKCRBVnxHm/pHO 9Y0MB/9Khom+1EvI9fGD1AfFOjhDdJqp3Yo0arlzCJekLXDOiJ4sXoPFGx3/tCETsFdw8EqCC8x gwlBCL83xdEqSugBdkJDhOCc/qgLk38zUsK0fmyEUHWcFIXGgkv4pA1AJkkK2Ltod7fsvyHXHfF OjN61CRW6o5TGSld59dYglYmkPckn4VPIcuW5B779SDcb79W8WQpTgvMZabIE84psrRbpaOJsfk PZ/y4CkslQgkrO1GKnXhWjxSHHRqvfjKBOrPpnJQ4CTLmFhz94lDHdpGiCmWGioEhL5W6AtmQpm y2o3jORt7WwvYpKO3ke17QF/yEFy/JlkVO2WH3qFpEOIaKfE 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. Signed-off-by: Manivannan Sadhasivam --- 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.48.1 From nobody Mon Feb 9 20:36:31 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 9682014A8E; Tue, 30 Dec 2025 15:07:40 +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=1767107260; cv=none; b=YaeIAtceaRK2ME0sLA86Xv94ixU+N73frb7lkF3xzzGkePYoqmEGCLaC8PbwMP4hkJKyyaII5SnOxeUN7I/PHt7t5WXwROyWVusaBOVURVsckfO3HdbrXsLArzTlkIlCU8RUjdohROOXl1fqBBNJ317LIlXX9gn0HgCQnJcFdz8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767107260; c=relaxed/simple; bh=yzF46xfIi50il38mClEBJMWTp3oIYulpE5xmq/3J6PE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DXdz5s9pyaBlq/BwVMbJOjdtewq137U31gqhi3HdZhfJwHYJ4kq5mx8AoDeUd5O9JEWz0sjK6QLL6Wqt//AinnMaIeWURp+2PHLYvpAnQ3gF0UbKG1iksRgOekQwhQnnECbgz9ThLt7DdcsvZXZOei691UTxVio8AJkC3sbTstQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gFgCN+R+; 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="gFgCN+R+" Received: by smtp.kernel.org (Postfix) with ESMTPS id 69BC7C116C6; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767107260; bh=yzF46xfIi50il38mClEBJMWTp3oIYulpE5xmq/3J6PE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=gFgCN+R+GkxPT7d/oQR5BZu3cza5IbG/mefG00nZHUAX2lXQ/J77KLVPOKLJuc02N bka6lDBT2YuT1fVKemwOoBM59WbY5Zq/E7Os84gFnowx3tnePUO06DgGLz94S3c3Z2 tubayxEnhU7R7SnBTZAXvCUGLTwNaL3Rwn5yYxpQHorLMtoDTVEOzjU8zai0QXmDiq kXywEid0nVtNJ/RtEWql8UcT7BDPX+ZNra+DXbQ36a2jurzNEv5X/m1MXHuB4qT1ej jGZdzamV3pvR7asZt4l7afCKIWTwHtNSviOo1rMT4ksLABYgAEDkw7w+ntUVdAtmPU PfuuHyT8Dnw8Q== 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 5B804EE0211; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 30 Dec 2025 20:37:33 +0530 Subject: [PATCH v3 2/4] 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: <20251230-pci-dwc-suspend-rework-v3-2-40cd485714f5@oss.qualcomm.com> References: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@oss.qualcomm.com> In-Reply-To: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@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 , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6823; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=yepoYjCczgLvEC/o4OBX9Hvs3juUiwx1csBdzMDaZpY=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpU+q6h5lBJyTjzvdJVbjQ2ILfJqDCHwlQ76/TG XDrhMHYF5KJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaVPqugAKCRBVnxHm/pHO 9dDXB/0Qkri6XAxf5OehuTZ9GkT7k/wY72trKWrPZNrPtHrHn5czma5NwK58hjfCl28RfvuoipX E5cuMfFaH9i2/iAzfO/d6tNyUMtf50GVTvuA28PeZ7l7udVj4YkCwwBrbGilqWHEg0rl+RwGpPd ynYF/7UqoSljC4ExT5k8sqhUvRkzEDukpqzKzNb89Jxb8NTssDfFjKxIDEq36EveeGheZZnonzS xYeSn5g3NEy8tRF0Y50WCCPpz80CSpLdHsFXJ0JMGVWdiW8MXJvs50OWi1jWPwN0H4VHRCtCU4G gk1ixmzLm8uL+BSArPF55wdRmQPWL5XO3J8eQqRoNeAdmMOC 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. Signed-off-by: Manivannan Sadhasivam --- .../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 55c1c60f7f8f..87f2ebc134d6 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.48.1 From nobody Mon Feb 9 20:36:31 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 D9CAD2E541F; Tue, 30 Dec 2025 15:07:40 +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=1767107260; cv=none; b=hViZ1q/OFxLiMQAKmzeFZMAYdVNG4gEVIsr3by3td1vbcCJzR7myIIu0vx429J95+FDkZvNY8ulmxZs6MFJjsSW1CnGmz2n6rFF8JiCCq5RObKAlbA1fSkqfOxMCo0JFUAI9FLRVmbp05RoemLIbKPQGWNgyEThOOOl8iiqeN9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767107260; c=relaxed/simple; bh=1Bx83pDKo9jaY2lEHQcpiSEbGnUIKcROGAVfSg3BNeM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TA1myN3niUQHGhV2yj7dd+D1vLRrNUBE0k+Ax/hyVATkTbvMEZkNYL1hRKmR7/0eijneK4eJaaFV1JUGAjRLykAJtIRfYabW2pI+wNrC56oPyxn6DXNh+IMDQ4K6IWo/EsIiFoiQczjpzv3ZE5AzJHzt9MAdQ9Wmbj52hz1VxZ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sU5lb3Dp; 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="sU5lb3Dp" Received: by smtp.kernel.org (Postfix) with ESMTPS id 72D8CC19423; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767107260; bh=1Bx83pDKo9jaY2lEHQcpiSEbGnUIKcROGAVfSg3BNeM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=sU5lb3DpoafvKMuTWEFb5UHfAwpNhJtsaaEwfFIQwsZe8X9muLW575v0rzT1ver0o adLEgfZCaoY9kEuXwLcnc2VJqq8Z+wi9T8rPtgNCJU4gItDZzqWX/Yq9JiG/ugRB/n HEGx60J+W3MLUYUwbvbTsB4nO+8jlSHUN4QMPt5w3EpsLhtpZCL2oY3ftGe9+/FlD5 M+4iYVyAPh5L0jFigdDgIQsDprfPiEzfpmC0hzqQrehaAon/uDUSQ+9WeZANxOwQcv Qxe7+C4wl1K60e7GsUc6cMUaK7Xmv+qXm3tmFo4YrMsc9NGxqzuvd+C9Kv9WHmm6DL pPMbX7aRWPkXA== 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 6C31AE92FC0; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 30 Dec 2025 20:37:34 +0530 Subject: [PATCH v3 3/4] 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: <20251230-pci-dwc-suspend-rework-v3-3-40cd485714f5@oss.qualcomm.com> References: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@oss.qualcomm.com> In-Reply-To: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@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 , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1068; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=7kXiC+5h1EOCvJw9bEDf4bWdlgkGwkMaGfwFegH0XMU=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpU+q6W7XiwNgYjeIJKO9/5oCTCTTpJXIWw4ERM GMjRyRL+TGJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaVPqugAKCRBVnxHm/pHO 9V3GB/9lz+R75Apz6yGZipqwoZk96F4W2VhtMJl8fr9rz2mdwHWme6XPl33nCqj/T1qPbn73B90 cPZyekANCa7kPXk1vJxJw3vMcouc6DB0qQsyIwL4SG+fi71kwahO15YPu77mNS/GAKNORm9X78C CK5wwjS/E/hCfNQwp29qqGB5aaXc+MB+QE960T2ooiwHkSS4EzkWSsgFFi+WsjxgP2IHITt6K4z n/GYmnYw7OvO0pYe9Q5cFdNvUNM+CpW/oDxmtanaJ3oEWyxBHgxbGPSlk8elcS8Ce0Q4WK9yE4N Zn8VG9xluChkrtW6+pto4Ne8v1fdGon2PHZCz0MlfyJjr00Q 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. Signed-off-by: Manivannan Sadhasivam --- 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 87f2ebc134d6..c2dfadc53d04 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -776,7 +776,8 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci) return -ENODEV; } =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.48.1 From nobody Mon Feb 9 20:36:31 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 F396F3191C2; Tue, 30 Dec 2025 15:07:40 +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=1767107261; cv=none; b=FT7ETfursXGWqgEL11+m/N90kMTWKO5MlE9pil9tgjfbGoDNc4aSdU79Sf8OKyAr0iaX6lhYC0B6rkuYcvB9/LuybV5p6M2vUMiJOJYKfUz8mjyREIEUZ5/H8OhhDIfJqD5Y0V+iq5Vav2rFUoTj9NQZXDMETEn8pW4tmeEgcg0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767107261; c=relaxed/simple; bh=ZmgHyGVZ7Y7Lhqp48jneVD1fuTR1V2+N9+xDDw6lxOw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V6s8Zpsx+pTaBu/kIshwXRvlNUKySGVG7IMSTeSLq0377nupKPE5cTqZgfz1MnTD90OetFBeCi0TysMdfuIO9x/TCZbGrVBZJchwMOSSMmZ/tXogQcmxOtrJBc6mYSOecY8t0Mk0DV8ITlmHUGgsQzXs1EfZnHzYgg383FgHzmM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=vA2cvGRT; 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="vA2cvGRT" Received: by smtp.kernel.org (Postfix) with ESMTPS id 872B9C19422; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767107260; bh=ZmgHyGVZ7Y7Lhqp48jneVD1fuTR1V2+N9+xDDw6lxOw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=vA2cvGRT2lbEqxbWkWR40R8d+/XZL51bbotUPtV9o4MWMzPCOndXbSO5S4CB3A/o/ 5e6T0vAA8D6+tsKC79jtRMf/XDRwvjMayB/ZF79YLV9Ox+8evjOrSUua0ZeQMsG5TL eAb43NKUFSezd4cWx7fRYN6iL/QTJxo+zPkJZjrsDVv57Y65kqtzGdhEF1GOIK5mdv LK+EGGlvv/Q1AhyZmNubCOMwerziz9Qwv85+ehYr3pMqplzlarPy/pQAsezBQiiQUC ZnAWVTVuB5gzskAdpoK2tiy3SL/YJZActwtkxj+4AfZKOWHEfWDhkDUyPyUYQVzFqE Mu6KnBc1yvQ5Q== 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 7C560EE0213; Tue, 30 Dec 2025 15:07:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Tue, 30 Dec 2025 20:37:35 +0530 Subject: [PATCH v3 4/4] PCI: dwc: Only skip the dw_pcie_wait_for_link() failure if it returns -ENODEV 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: <20251230-pci-dwc-suspend-rework-v3-4-40cd485714f5@oss.qualcomm.com> References: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@oss.qualcomm.com> In-Reply-To: <20251230-pci-dwc-suspend-rework-v3-0-40cd485714f5@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 , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1204; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=CClkmOJOF6jdGk3GCx6uryCHLsqrAzBQPUqzwqi9zYU=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpU+q61ZwmA12k0gctA5+P95OGdr4n6fxaFZeCz A8XkQzl0ziJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaVPqugAKCRBVnxHm/pHO 9dXJB/9Ss2PGxk0OVINcrmeDre6/hDbM6zBt2dMRWud6SNfN2XSafS6Ha1km6Rd9ed0iBQJMJxI S6Cu8DVrMTCfn1wlzrzXd2fl3jEh4yWoF1dB50k4rTGpebBFUVJ91MtQqheXdHXZ5rKWQk/pF51 GjcJIGjgZuczOkTi7+kP4yQeTW0O9gmjkuNKt85WSPaa772s4mq+7ulhRKnpLDU8OLk4CvxBCHe r9VcAFOjS9G6RSIruuEq69jnY4ti/RDtfpAZKYHbtnd4vI7vxX+e6viFwB6btMY4N6TARjR2ts+ xJZHMMQZMmIpn0DbYDqrFJ16P1xUQThz3AMo46xG0dQQ2YrP 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 dw_pcie_wait_for_link() now returns -ENODEV if the device is not found on the bus and -ETIMEDOUT if the link fails to come up for any other reasons. And it is incorrect to skip the link up failures other than device not found. So only skip the failure for device not found case and handle failure for other reasons. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/controller/dwc/pcie-designware-host.c | 6 ++++-- 1 file changed, 4 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..ccde12b85463 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -675,8 +675,10 @@ 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); + /* Skip failure if the device is not found as it may show up later */ + ret =3D dw_pcie_wait_for_link(pci); + if (ret && ret !=3D -ENODEV) + goto err_stop_link; =20 ret =3D pci_host_probe(bridge); if (ret) --=20 2.48.1