From nobody Mon Feb 9 03:58:51 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 E0148275B15; Wed, 7 Jan 2026 08:12:00 +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=1767773521; cv=none; b=tI+kFMwZ+/RhnsZpZepWBuMvkpNsHT+6gUwcBtDbQpTur3IaQNrZFh2V/KAoKysuLEribbpG0sdnkKmIwiZthJaMM4g5Wh8dkKc1C8EsofKg00oX+/tONSdY/sDxjs7dXuo3L6hKiJhFJ8L2Sfov51CYKeS3RtZ9dbh1h21Y/sA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767773521; 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=IFHpIVYMyjdn3a5o72DsSDt2+8O0fx24GB1Z+z9TehOtc0FwUqaT9BfYD8DOzcvTTHd3HeM83Wj2ZgparnTxPvlQaQQJHsU8AoOYSGG8AtwmP5pr6ivea28cAx8lHDCEOX4VH7B3FN+XxK5U227cDCWltYqJtX3rKyhktFol2Xw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jHY+HZCe; 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="jHY+HZCe" Received: by smtp.kernel.org (Postfix) with ESMTPS id 88E07C19423; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767773520; bh=/HUbHnhoN+KoA7lEL28DWh1/9SAiXUrJsxGb+QY8XV8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jHY+HZCexwIx2lJT6KaxU3IiRydHI54cXJq6LnuHxNRQnHF5XEcndawi7U+eAYPsg f6xdyrUn+42A4UaFaPYdqDwcAaiylGQO1W/q64XB4fNi+0mbccE8fqRxvETeTJV1Ce VxN0+VZC1XArezGlAbcgAqeh8huFB1ClY1tylN7oBEMwe/MQTo90IJtxGgmDAARqz9 ElhZnjTNyNWyOyzI0GYPdOSdgaPrKA4y13Kp1wuF5OMGipQOUocuVuTOMY77t1fSRK PzdC18G4WGCGF/wUExakFIkNcrbeOXT5WdURI1N/yRDmG21VCsvm21wgdlXdymYV8C YplWRl6KizVzQ== 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 791CECF6BF4; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Wed, 07 Jan 2026 13:41:54 +0530 Subject: [PATCH v4 1/6] 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: <20260107-pci-dwc-suspend-rework-v4-1-9b5f3c72df0a@oss.qualcomm.com> References: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@oss.qualcomm.com> In-Reply-To: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@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 , Richard Zhu , 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+kc71AcsmYgBpXhVNsiYqYPnHrsxF4Lzs40U2nUYrjnT+ssLTe YDmlgNzKRCJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaV4VTQAKCRBVnxHm/pHO 9RJ2CACHGLq4GrQ/ZaYw12uJqQNtll4VHVYi8UWhFUujmPCX23Mu8VPyTa0omkvA8b0xy7Rgqw6 8mOoUxHWK+san0A6DCXd7G6Zhue3rcesnQTy10cuVKtU+UrqoIjXNftr3tdQelaKMzWU1MiWuWd DNkpGWs5ABVOufoiZAlej46i99BhZn6tg1mEv7X0yQTfkheioiSOpR4dJ89d6rFlLALor/8s3ix g7tDx7dk/ySHbDgKQ0Z6mHTdzG5KdsWANLYvYylcUiCphlp5IiqMm7lFy0rOrWpZfKy0FwNasMe gUQhpRfxbWvups/aE7VNIOBfZmqFssR0xAe9c/O22YzHLktH 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 Reviewed-by: Shawn Lin Tested-By: Vincent Guittot --- 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 03:58:51 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 023CF27AC41; Wed, 7 Jan 2026 08:12:00 +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=1767773521; cv=none; b=SLbTzvRYEenDYiYiUqmTtrPFdaLWcfsFomgg/GBRpRNvVCdsqwq11BcpBEQtAX2kZC/xXr4fjiDl+x7F0iCRxwEDwwHlD/4iA+ajvlRzAVOsHH+ppOQGy/njJzr92ATFebTNY83RngDdjnXRc9XasDnp5iGlE1J/x6mFPP78ce8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767773521; c=relaxed/simple; bh=yzF46xfIi50il38mClEBJMWTp3oIYulpE5xmq/3J6PE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tAM2HYIzhSU/BGnHJ9KsHviSMCyjURco6/1mzE8qgtwwC3yUhiAqDKWV0f8GUdtcLfZtMYsBdfJZVoc0w1TM+9KJihWTDD40ciJyedbIdRwX013Q3EJlwzryRnIt35tRxLToOk7Wad0NLR6hUNt+dK5onX88qbRSIPTtkKVAps0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PaOXDMXC; 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="PaOXDMXC" Received: by smtp.kernel.org (Postfix) with ESMTPS id 9A857C2BC86; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767773520; bh=yzF46xfIi50il38mClEBJMWTp3oIYulpE5xmq/3J6PE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=PaOXDMXCV/qYR6b58Pyg2puY5Bbk3LZnNsMrUJg7l2Fj+aItkpEK8rfY4WHl4RePh 4ZBQB/JwHi7Tzs3oUy24BOh7//b8LlIRXNwzfTnpLh3KEppi/XY6U25twpINFZIXKp t+HJ2FrH4Q4Z7OikM9k/uowUa+kTeRNTJe8/Cy8h85sOsE/GbWEIKGuyw6bj3enD6e W/RvdU00yejwW/LfjZmJnHsUXRBevf9da22aHtmhcRfO5bsu0pjwBCi2kyGaNlQQvO IXXopvc8LYOXdstHZYWZUtqHChnJ3QP2KWqvwf+R3DMxgZzjIFtf9svOVbg7YfGjmk IOytGSNwXWhYQ== 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 88723CF6BFB; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Wed, 07 Jan 2026 13:41:55 +0530 Subject: [PATCH v4 2/6] 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: <20260107-pci-dwc-suspend-rework-v4-2-9b5f3c72df0a@oss.qualcomm.com> References: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@oss.qualcomm.com> In-Reply-To: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@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 , Richard Zhu , 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+kc71AcsmYgBpXhVNyuhytwytAlpTjDIfNS/zmIOMaKCsnlbA2 1e33zSwQ/OJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaV4VTQAKCRBVnxHm/pHO 9elLB/9f+K0KfUvkBy/rJIE123WazNmHVHtkRe3lxM4cPV7HTmtiWBs2VKGI+CFey/ygDKM2lPQ c7kLcyDNXLsy/f0ZBIac2yXj8D5dCCvQFnMJg+K/3DQ23swhwSEBwWbNDJM2kmXcn5tB9d4H90g jTlj2akarpikbY2pKNUEDQf7873Eql+3McqWVT9WnB4Aj0EAIgi/Ff9/vZCwf2ZocRX67Vd7KDj CPzpf2BJK2YMcVuHVbCnyO9suylqySPL9GGQ+CfhUcBupWCWhZ5RLgH7tl2U4p6w/Yl9026x2W8 HGwGnSRSTrsWKaUgXZF2fQLuU/Iga4hUdgQRO651qRHlp5HD 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 Reviewed-by: Shawn Lin Tested-By: Vincent Guittot --- .../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 03:58:51 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 2D6D9284B58; Wed, 7 Jan 2026 08:12:00 +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=1767773521; cv=none; b=XXU30IER2luXOFw2sDVuiC65HxvSZnfvdUZFHl5ym7xo7B2lljMRowwpDhAZJuxcBD2SS8RpBeH45murx0V0EF+anWeFJ++dkqJVfRzOef/gJ28W56tVBVmMYJdzm80eWh5k5aLIdxmkBH3rjmTy9SFvwAVrZMB34p5o4sOgNRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767773521; c=relaxed/simple; bh=1Bx83pDKo9jaY2lEHQcpiSEbGnUIKcROGAVfSg3BNeM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PeQHL04OJXjxDlWKoYULqf6tzPSAZ/xxRSlKt+0AG4LxpfZ96AjagQmX+ZvCAS8XQDrik0fJsiw7DlumemOnX95QvIPzZCoXdRrr2Q3r1D6Tm2UbzZabPuHhm4jjbQFQBzuC2lNeZ+vX+MWibwh4U2vYc5IMIYcLS5jhabDPFZE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a+gAtCmC; 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="a+gAtCmC" Received: by smtp.kernel.org (Postfix) with ESMTPS id A41B1C19422; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767773520; bh=1Bx83pDKo9jaY2lEHQcpiSEbGnUIKcROGAVfSg3BNeM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=a+gAtCmCacrnISTlyMbHwvjqbEGLX04dC7IW7lwMsSZlRdOe8+uvscfBE2pOfVrRn e1u2UOhdz5/CMHi30TuIuL51tBDqukB11Iu6EXEgDr+S6MpD3luyPPnihp0NkZqjt/ qmD7yp74LljJuHbQFjiBmiJsxFv8d+j0is4B3ZxwUz9MEiGAbTL6079fDxqR+tkQFM KrLLzVjdxyqEnJcJpm9l13Ft94k7W5HxPRSvX6MgxpNmynrig0Q6GUgOVvCWAaMs3y IcavZeyx8iSq7PkFTmE6SfsS62HcubtsQth/ZK4/av1xv2HepTzpQ+37FuDbv9QSeG Q4gHmJE+X+ePA== 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 9712DCF6C00; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Wed, 07 Jan 2026 13:41:56 +0530 Subject: [PATCH v4 3/6] 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: <20260107-pci-dwc-suspend-rework-v4-3-9b5f3c72df0a@oss.qualcomm.com> References: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@oss.qualcomm.com> In-Reply-To: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@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 , Richard Zhu , 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+kc71AcsmYgBpXhVO+wv6IqrXUHtZZ7pCoWCmyGAxjzy7H7TCb gQK13gxUTCJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaV4VTgAKCRBVnxHm/pHO 9U2KB/4m72B41t7n/mvH/degieIy7YePSsqP5IBleoaDzPOABR/ntbxCFhi9USstVjCjposC/1Y PeBT1LFHVwCe+ZI4a8ZQD8yBGdRVxcUdItAYYUvUuIa78PjPSHy7dJdqhYYqeb45E/812waSWOC e44WBUt4/UP8XNNN35fyk8QOoIz3lLo9o6+Ie9zXy2FX3I8tXNY3kb2yxdByomr4HLoQHvJHYqs CtZNrWzpvpdW9DmYjd9rLlDbBXVSW4qU8dbqWSxO8G8wFYgO/Kh6R8rNOjFKQMHQ1kWRYlnF8TI yvqeok1ufUpEnVSfef6J7BRzeqK9Tko1x1PFTa6hnrQdzeBa 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 Reviewed-by: Shawn Lin Tested-By: Vincent Guittot --- 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 03:58:51 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 1113B284671; Wed, 7 Jan 2026 08:12:00 +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=1767773521; cv=none; b=oKbY0WjKXfhB3hBzNlD5r/cliY19yPb6n0nUXNW4Mkcq56ko62kzZEAmsyXgSJW42l5+2DlJJ2QnR+PsNuW/4S/lGwPR0yXiDuBPQ22NAEwj9gJ5RIOLRzL1HkW25poKhyIgYTZGwrARLiFX8au5w76pH86S5QC3JmnLYdDeyeM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767773521; c=relaxed/simple; bh=ZmgHyGVZ7Y7Lhqp48jneVD1fuTR1V2+N9+xDDw6lxOw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HD/83iYeogFhtBOaVPrVrGgIhigTayaeKVNbDxrEKT/8/2jRFF0n/Tm8yHRdis4QynkUt9mtwgOO9edEGybVw7YQkNGFtWcWS3vqLUuHrvY15HR8KkjRYG167jXyKbJ4mcFxDeXWG3lKadjNzdsD5MYB6GgwLHv7U3TJghi5bMQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ce56Ztky; 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="Ce56Ztky" Received: by smtp.kernel.org (Postfix) with ESMTPS id AF3B5C2BCB1; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767773520; bh=ZmgHyGVZ7Y7Lhqp48jneVD1fuTR1V2+N9+xDDw6lxOw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Ce56ZtkyAulwGbbYbx/fOCp2jbWkoJc0BD8o1riaZ9zPqwOLRATaeyV+V3N3TVwi6 PYwDwW0AGe7z2OpCtg8mDzoF0MULi0bdsNdE89GpT/LaY/HKbhmc2AzdtPqB4UTAWE YhW+aKeEuq6tDQ4bVM4Dlr22KtuCdRSRoyjBQK3pYyUoX/tmzbt0YGY6irCj7AlZCY 9Q7yC4kBeZ7mFQ2pUg/71nXSGEgc6PMbAtd43fx0euxTgjPmMauWNlynqSGsZ3th6Y KzXCxhCDez/V5KC5IG0cuZ2r1sX4SmJq4DYA31VMJwgyatSRxT9v2URnowsPweqxxt amUa6SC+xSIEg== 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 A6E40CF6BFF; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Wed, 07 Jan 2026 13:41:57 +0530 Subject: [PATCH v4 4/6] 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: <20260107-pci-dwc-suspend-rework-v4-4-9b5f3c72df0a@oss.qualcomm.com> References: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@oss.qualcomm.com> In-Reply-To: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@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 , Richard Zhu , 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+kc71AcsmYgBpXhVOGmRP2AlbYJACIPOBXvP1+/o5cQd7NabzK z/MLTmp+ROJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaV4VTgAKCRBVnxHm/pHO 9UtFCACEtjoJo3LIhw+8whZppEXDWvFUJgzWrjFas8UhhcWf7Ra4CCWrNMBN6Vmp212C9RHtYkQ s/Tmskd2ukLK6xrFr+NM/y08MhV1Py5fUz5T2jY279wm3fXhnVFUQtK3p+y8K+Y5uOEmV33qS3m CJ5Ro2r6QWkfWq/6Xc0GvLp3rX8YwuKEmGgvJxX93Qdtpkj/gd98wGeMjBDyxTJIIiNhHlOoObZ hIAa+kq3R3V0BhkMqIAImUKK1PD5Ro0FOqlCiYRNlCFHRYk2M+XgxXNrfUd0DSA1VG3C0KaqUlp Nz3wuVzqevSWFHcoOU7qegpmU7AaAlrqwmGGQi3yhKVaxbqY 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 Reviewed-by: Shawn Lin Tested-By: Vincent Guittot --- 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 From nobody Mon Feb 9 03:58:51 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 4FE622868AD; Wed, 7 Jan 2026 08:12:01 +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=1767773521; cv=none; b=meNIxSp8Bm6kfQXCyknEBW9s+1kwS1GQYU6YFXQ3pufqik11R9aR0IgPp3FbQmNIPT8vhvI+pd7NBIDAHR6i9p/hx+gaODqE9HGkp7egQBqxLbMmsaXkh84vCTRk+sxzeks0oYrZkQAfuW7oefiiri14ilXhSGFibuK4rXPpgLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767773521; c=relaxed/simple; bh=Z0Pgoi0Qlqa+YgrQg2kILANNAwZXLcX16MIbV8LfX28=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=blfK73oGcFq28Khb5OtqAENmtyQTES3FHWg8Zh0ttDX8g1J6DzekkSRsLmtt6gvKDm3LqVfUDbRi8VNTjIlFqcy9vwmySDWVmM6Pcgpm0VdwLZQyWjDHChzvKtw5aOEPefYeM43twiGFkQE4ciV0LBE5nxu2P0YDCxrjxqEI8cs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=urW+Ljg+; 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="urW+Ljg+" Received: by smtp.kernel.org (Postfix) with ESMTPS id BDC91C2BCB3; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767773520; bh=Z0Pgoi0Qlqa+YgrQg2kILANNAwZXLcX16MIbV8LfX28=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=urW+Ljg+S4QqvwojLPLKIoJF+HDHNXsv6aqzJgYWmrV6bkUwKEqiBT4XZMiTAIVO4 aSm9aZxgsgsRBcMVk5bWgKp1qFWDoHmUd9vp9hWHurrDN2lr3IInD5VFclHvEkWOWY zHCXTxrSe9Mq9UgWsvtFfLsWVeOKAxWKfgqSm4BsHOddcp3mdLOb8iHOC+K7G+UD7n 5jI5AcdfEZxIMAvsRouvpEnoEWLChjEiSnOg3LJeKjJtGDIjiJ2BFjpPchgmuyXHhg zR/nrE9jSEk7xvwKLKN7DSmWbqi6ItRaZR+NrpBiJ7IqkdY+vEG/5KAcPk2iqhj7ec nLRZxEKW0USnQ== 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 B68FBCF6BFB; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Wed, 07 Jan 2026 13:41:58 +0530 Subject: [PATCH v4 5/6] PCI: host-common: Add an API to check for any device under the Root Ports 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: <20260107-pci-dwc-suspend-rework-v4-5-9b5f3c72df0a@oss.qualcomm.com> References: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@oss.qualcomm.com> In-Reply-To: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@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 , Richard Zhu , Manivannan Sadhasivam , Frank Li X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2003; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=kAXCOvQycBkgZ3T8qsZnSaD6+NhiYd0ZqipWoNSX5Vk=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpXhVOYVIGdtRi+M4F8h7//2lgXAskLXBIFa2BF GLD3I535hmJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaV4VTgAKCRBVnxHm/pHO 9QveB/9DZrJ+fECJFPzH8rdLobYA+GeygfYwGeFxZv6tJnR09GgwnZ3A6QIPjEW3HGsmy++ZRA9 95FDwS/bDYvmjU1cscQ8ULSEHOPLkWny0xTgjjJrnd2ji8i9bVyWflYa3FZWYyTb3eP30ajFdBo 22Uq3RJa2rkcf8/2k3Xxu+X0G1cBOE3RUMFqaativBvyveclwgz1+IQAE62eFkP+aAk4KMC1hRX N5AIzJH6SqaFPeJNh4xs+bj7AAW/vc06Q0mh8jhdtd9EJZLg5ctzOpgqOuuwof3+8tvPPy6PCn2 Z8SC1idM0irQ+T27K3kQ6jTKVPHhLzGBcGlPWkRgd5YKOnbW 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 Some controller drivers need to check if there is any device available under the Root Ports. So add an API that returns 'true' if a device is found under any of the Root Ports, 'false' otherwise. Reviewed-by: Frank Li Signed-off-by: Manivannan Sadhasivam Reviewed-by: Shawn Lin Tested-By: Vincent Guittot --- drivers/pci/controller/pci-host-common.c | 21 +++++++++++++++++++++ drivers/pci/controller/pci-host-common.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/drivers/pci/controller/pci-host-common.c b/drivers/pci/control= ler/pci-host-common.c index c473e7c03bac..a88622203227 100644 --- a/drivers/pci/controller/pci-host-common.c +++ b/drivers/pci/controller/pci-host-common.c @@ -17,6 +17,27 @@ =20 #include "pci-host-common.h" =20 +/** + * pci_root_ports_have_device - Check if the Root Ports under the Root bus= have + * any device underneath + * @root_bus: Root bus to check for + * + * Return: true if a device is found, false otherwise + */ +bool pci_root_ports_have_device(struct pci_bus *root_bus) +{ + struct pci_bus *child; + + /* Iterate over the Root Port busses and look for any device */ + list_for_each_entry(child, &root_bus->children, node) { + if (!list_empty(&child->devices)) + return true; + } + + return false; +} +EXPORT_SYMBOL_GPL(pci_root_ports_have_device); + static void gen_pci_unmap_cfg(void *ptr) { pci_ecam_free((struct pci_config_window *)ptr); diff --git a/drivers/pci/controller/pci-host-common.h b/drivers/pci/control= ler/pci-host-common.h index b5075d4bd7eb..8088faf94282 100644 --- a/drivers/pci/controller/pci-host-common.h +++ b/drivers/pci/controller/pci-host-common.h @@ -20,4 +20,6 @@ void pci_host_common_remove(struct platform_device *pdev); =20 struct pci_config_window *pci_host_common_ecam_create(struct device *dev, struct pci_host_bridge *bridge, const struct pci_ecam_ops *ops); + +bool pci_root_ports_have_device(struct pci_bus *root_bus); #endif --=20 2.48.1 From nobody Mon Feb 9 03:58:51 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 4FEC02868B2; Wed, 7 Jan 2026 08:12:01 +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=1767773521; cv=none; b=TSrdldCosBKhWa/xjBvc/6pBiLvQ7R+oTgc9THxvB7CLJlfzBukMAnl+Svio6/kkcO1GFRa80mIGHpNQAw7bH1jZnpdsYgMY2hb54VRbDCreE7QgebCOEj91rsl4RcoDXg6jOxu29tswfrYomwZqrtiSNfWnjxipjJQ3BbUKyDo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767773521; c=relaxed/simple; bh=NXcrBc6SPdJUDN1PP5t6mB2NTOJ+7GwZ9k2MbvSSQH0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rJazFTK4DR5x5/rYq7+L6ltZY9gPm6unximEcfKHt/nxH0gfRwNG0lxlfNnDC5ZxAlu9QK+6VDmmDhNVoQlRt9jiXcYXxXYAe6YDoWiElRFUJ847r6XvP+gnWzGsmZ1CDUpSUGyj5+HJr8i7/0rle54YkeMfwi+b7k9txuDLDSY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DdUKYL+F; 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="DdUKYL+F" Received: by smtp.kernel.org (Postfix) with ESMTPS id D12F5C2BCB8; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767773520; bh=NXcrBc6SPdJUDN1PP5t6mB2NTOJ+7GwZ9k2MbvSSQH0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=DdUKYL+FWUByWwEyOibeYFiCVgWXuNFy4iSn38RUjXHap0uVBYuydTeksJTHXVY2z DnW/GrMHJtYUBYOlIPBjEg0D4xmUtZAJ9YzMA2QfaNuMKvkBotsvbXvlD2QakI6ZNB IczBX7mCWoubt7ia+VFB0sF8r2Sy1wGhwKlgumVHcwo85qlUulXrhA4Q2/xpsogNOO 1PvUbTX4yxrtuPe8A/SffYhSuuHoU3Aostf1moWD1gsWZmfJOfTGXGFTLd9EO/Qikg pPmybPaF/3Sljp2uNPCmmLlLiNjrHJOeLsx19GDn3qgGnRT5fuSzGZUw2a9QOC9JNb ht87IkITXZKrA== 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 C5648CF6BF4; Wed, 7 Jan 2026 08:12:00 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Wed, 07 Jan 2026 13:41:59 +0530 Subject: [PATCH v4 6/6] PCI: dwc: Skip failure during dw_pcie_resume_noirq() if no device is available 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: <20260107-pci-dwc-suspend-rework-v4-6-9b5f3c72df0a@oss.qualcomm.com> References: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@oss.qualcomm.com> In-Reply-To: <20260107-pci-dwc-suspend-rework-v4-0-9b5f3c72df0a@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 , Richard Zhu , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2136; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=A+dYXc5n837LUvYZ/2oH3XrvOeQd2MIwA/IwRECz2uo=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBpXhVOUjSqOMt6oipJjhHgmBL0+vEUiOzLr77dK o/yZ0+6BlCJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaV4VTgAKCRBVnxHm/pHO 9SdDB/sGCaPHvWbzjXbEQqHunIZGnTeF+jfGN8X1HvypQRxSWaoCrN9PnHi7fF7M+jLrmu4Vqei m0LaOVq3Giiu0o6UW2kqQWcYlNjZRQXvKH9VkTX+fAgE+guRIXtiKQXmfcuyhxggZtgvJSyVP7t B3AsEKuKKTzyCCEGQrX/uIEgpVs56RfU5u4tSFJKbdiqchedKmuz7DDghmf7/VIJcBFQLQW1Xwq PPPDUx30SHfrnCzcrbGNSS7ECaJxbjE9cGPE9D9eS06eeQznMAhBdi/v1ivyAPWRbx4qQrOQG/1 54RUjRClQzvsILf5oV6wviHq4rb2mi7WLJiYEuEKedS4t79I 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 there is no device attached to any of the Root Ports available under the Root bus before suspend and during resume, then there is no point in returning failure. So skip returning failure so that the resume succeeds and allow the device to get attached later. If there was a device before suspend and not available during resume, then propagate the error to indicate that the device got removed during suspend. Signed-off-by: Manivannan Sadhasivam Reviewed-by: Shawn Lin Tested-By: Vincent Guittot --- drivers/pci/controller/dwc/pcie-designware-host.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pc= i/controller/dwc/pcie-designware-host.c index ccde12b85463..c30a2ed324cd 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -20,6 +20,7 @@ #include =20 #include "../../pci.h" +#include "../pci-host-common.h" #include "pcie-designware.h" =20 static struct pci_ops dw_pcie_ops; @@ -1227,6 +1228,7 @@ EXPORT_SYMBOL_GPL(dw_pcie_suspend_noirq); =20 int dw_pcie_resume_noirq(struct dw_pcie *pci) { + struct dw_pcie_rp *pp =3D &pci->pp; int ret; =20 if (!pci->suspended) @@ -1234,23 +1236,28 @@ int dw_pcie_resume_noirq(struct dw_pcie *pci) =20 pci->suspended =3D false; =20 - if (pci->pp.ops->init) { - ret =3D pci->pp.ops->init(&pci->pp); + if (pp->ops->init) { + ret =3D pp->ops->init(pp); if (ret) { dev_err(pci->dev, "Host init failed: %d\n", ret); return ret; } } =20 - dw_pcie_setup_rc(&pci->pp); + dw_pcie_setup_rc(pp); =20 ret =3D dw_pcie_start_link(pci); if (ret) return ret; =20 ret =3D dw_pcie_wait_for_link(pci); - if (ret) - return ret; + /* + * Skip failure if there is no device attached to the bus now and before + * suspend. But the error should be returned if a device was attached + * before suspend and not available now. + */ + if (ret =3D=3D -ENODEV && !pci_root_ports_have_device(pp->bridge->bus)) + return 0; =20 return ret; } --=20 2.48.1