From nobody Mon Sep 28 19:34:06 2026 Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09A25445AF4 for ; Tue, 18 Aug 2026 09:50:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787046623; cv=none; b=kJVBa9uAwpjo3tUtifLiDpeJTCW+ylnwuJm4lhu+i+574yotUMKu1YK1NY8/3vWKnYWZOAlD38EmFWUMiBmLbWzCDQWzJ0m2wSEKur0doRxICaqECgDFZ+lM9qXs+PFV8IWjwYz7g3ePq/ciJNpTNJqOmJFNNOVM45hKDnSdo+4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787046623; c=relaxed/simple; bh=jxzMQaiqawHQ/SOA9j7dDopTxyxQQALlbtrm64Kdsbc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pGUfo2uexTnv3X0+ua/vRDn0/3n+Ky3wCuyFaYGQbwC9PXU7syX9MPU5Y6hGD/JjYUtWS9gUGnIxP7LvMr3oKpSzQ5Mb+vpQ8PPxNV25zI84b662lVszEuRSqStZTJP0gILX7vCJdlZorXu7GmvGZ+rcvfdsFSK0SGMlo3JJqgs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=snhdaJpe; arc=none smtp.client-ip=209.85.215.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="snhdaJpe" Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-c9e7391839cso4313490a12.0 for ; Tue, 18 Aug 2026 02:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787046621; x=1787651421; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0wanu+zA8D4wAauqMrLFvx0gIfo6i0DJuB1JPGvu6HU=; b=snhdaJpe9kqeUB/go73FcvaMLwFDiepTKMHnyU5m32xLkeCB5nLLcFYXE5zav669PE 8SR1p0wTBNzEGUqKKqdoNmRPyasI4FJpzjCcymiw19d8kBbkca2KPIB6f8U5hVAonXcf Iog2Tw6A2IiikPyN6XTF2XHbiY0u9uHavrsqEiJM63lr8in6Btbby5C9ndCsuk6onLho 0QBBoCuXl62vElyuR9lYzywdja7m26PakMYSMckob+tEPFKr3j5jooCpbpbO3um+hUFi ObqFwO0ZdELeaj5+LLZGRc0xHxNyyPsRUYO2jWcSl0yi9qEiq36RnshtKzi4e9vq+cnM 8UaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787046621; x=1787651421; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0wanu+zA8D4wAauqMrLFvx0gIfo6i0DJuB1JPGvu6HU=; b=NtQzORfTPKWv5SBUCOoJBduIqmxynv9n+lqvujh+sBeN9b5cocvks9tBNJRxyQxNX9 Lh1CE+HTbITAb4GxUfx+DUE6/X8jlpAzg9zJG8DbIFpfLcUnCMWKITLWafyHsnpg2ZmG g6OD3VCubQLA7JnUb4GuuIYhTCqRTaRuWKvMRneyVnSiDmzbKyf1PkxStRQwe8t+YQvA EU1ufsiEkWcRVPfUsLHYWNuFr+HT2Wmt8a3pI1XivpdYfUvCnwRlnmCBXCHuGVkh1K93 fG17oLmmCTtwB9CzDXVwEbJE+g7CdSgJRBY119U4zr0PQliLfMBgx05U9XwJ8bByrmsg FecQ== X-Forwarded-Encrypted: i=1; AHgh+Rr1i5WOcKPOpxV0zKBor8aeC25nqJkuTIv9jbm6zt7mg3vMERZ+1DnM/cb12WqIVHLFUsj6GxaM8kxOJLM=@vger.kernel.org X-Gm-Message-State: AOJu0YyhTCz+CUfF2gc4W6lvX/laSlBrLGWdameUwvgDxSBXKvl5eoLa vHdkRmx97giEAU7cgw/7GpH0ewIGLenT/zc9cvLwWw3LXTeO5ytovV/Xcb0Y X-Gm-Gg: AR+sD10qjpCdaPT/BdVJeS6uruXgegVuAsupQND+ukjOw25TEefx3BvKRF6xG4eI0Fu uRP01CfvgYGUxUz7jHjtoAiYBZ21pR/ALItb/tIPT6mLTa9ITMb/JZNe+UjRj8RzwDWYmfC1Xrn SKlVRiwLtt4xGvS3veROMnApIl+nuX9/xvzw9X1xCB/sniuQ4Za8FlP8kS725eij+qYNfTIYXwq s6AHFHX055EPqULTAu7hoS2dUv5VCtK1IUwobk9OO1dKptN7p1Y9q1LVN70AHodqXkkH6fwq1cD Vis3BYTlE/Od3qR4BRmaSsLwZ1UuQal2EFDGoliYxeBAelqmrrcHBC+oRCBmBn+GVAKch14nF39 6GquxVP/wwdZVOEF4TlUnku3fwdjIsG+gL78fwWHjJQsU7xGVO3b2rQsHuVty0WBN7Bmuyd+Wp4 TYAnEZa80A2kcBx02i7fz4W2Le5jPQZojb4EnXfLB2eLH9f33exOJ976B+xY8v6ILWXljK8rV1L hMP6V1ZN5iPH6YyRwGNhfg= X-Received: by 2002:a17:90b:1c0a:b0:38a:c3f:3b87 with SMTP id 98e67ed59e1d1-3933b8721acmr28569070a91.12.1787046621291; Tue, 18 Aug 2026 02:50:21 -0700 (PDT) Received: from at-Standard-PC-Q35-ICH9-2009.. ([14.97.72.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-326798cb9f5sm18466759eec.13.2026.08.18.02.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 02:50:20 -0700 (PDT) From: Atharva Tiwari To: Cc: Atharva Tiwari , Mika Westerberg , Andreas Noever , Mika Westerberg , Yehezkel Bernat , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v9 1/3] thunderbolt: Shift tb_apple_add_links to pci.c Date: Tue, 18 Aug 2026 05:50:02 -0400 Message-ID: <20260818095010.1857-2-atharvatiwarilinuxdev@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818095010.1857-1-atharvatiwarilinuxdev@gmail.com> References: <20260818095010.1857-1-atharvatiwarilinuxdev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Shift tb_apple_add_links to pci.c as tb_apple_add_links calls pci functions. Suggested-by: Mika Westerberg Signed-off-by: Atharva Tiwari --- drivers/thunderbolt/pci.c | 71 ++++++++++++++++++++++++++++++++++++++ drivers/thunderbolt/tb.c | 72 +-------------------------------------- drivers/thunderbolt/tb.h | 1 + 3 files changed, 73 insertions(+), 71 deletions(-) diff --git a/drivers/thunderbolt/pci.c b/drivers/thunderbolt/pci.c index bbd186c29..83a4e1ba9 100644 --- a/drivers/thunderbolt/pci.c +++ b/drivers/thunderbolt/pci.c @@ -18,6 +18,7 @@ #include #include #include +#include =20 #include "nhi.h" #include "nhi_regs.h" @@ -261,6 +262,51 @@ static const struct tb_nhi_ops pci_nhi_default_ops =3D= { .init_interrupts =3D nhi_pci_init_msi, }; =20 +static bool tb_pci_add_links_discrete(struct pci_dev *nhi_pdev) +{ + struct pci_dev *pdev, *upstream =3D pci_upstream_bridge(nhi_pdev); + bool ret =3D false; + + while (upstream) { + if (!pci_is_pcie(upstream)) + return false; + if (pci_pcie_type(upstream) =3D=3D PCI_EXP_TYPE_UPSTREAM) + break; + upstream =3D pci_upstream_bridge(upstream); + } + + if (!upstream) + return false; + + /* + * For each hotplug downstream port, create add device link + * back to NHI so that PCIe tunnels can be re-established after + * sleep. + */ + for_each_pci_bridge(pdev, upstream->subordinate) { + const struct device_link *link; + + if (!pci_is_pcie(pdev)) + continue; + if (pci_pcie_type(pdev) !=3D PCI_EXP_TYPE_DOWNSTREAM || + !pdev->is_pciehp) + continue; + + link =3D device_link_add(&pdev->dev, &nhi_pdev->dev, + DL_FLAG_AUTOREMOVE_SUPPLIER | + DL_FLAG_PM_RUNTIME); + if (link) { + dev_dbg(&nhi_pdev->dev, "created link from %s\n", + dev_name(&pdev->dev)); + ret =3D true; + } else { + dev_warn(&nhi_pdev->dev, "device link creation from %s failed\n", + dev_name(&pdev->dev)); + } + } + + return ret; +} /* Ice Lake specific NHI operations */ =20 #define ICL_LC_MAILBOX_TIMEOUT 500 /* ms */ @@ -444,6 +490,31 @@ static const struct tb_nhi_ops icl_nhi_ops =3D { .init_interrupts =3D nhi_pci_init_msi, }; =20 +/* + * During suspend the Thunderbolt controller is reset and all PCIe + * tunnels are lost. The NHI driver will try to reestablish all tunnels + * during resume. This adds device links between the tunneled PCIe + * downstream ports and the NHI so that the device core will make sure + * NHI is resumed first before the rest. + */ +bool tb_pci_add_links(struct tb_nhi *nhi) +{ + struct pci_dev *nhi_pdev =3D to_pci_dev(nhi->dev); + + if (!x86_apple_machine) + return false; + + switch (nhi_pdev->device) { + case PCI_DEVICE_ID_INTEL_LIGHT_RIDGE: + case PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C: + case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI: + case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI: + return tb_pci_add_links_discrete(nhi_pdev); + default: + return false; + } +} + static int nhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id = *id) { struct device *dev =3D &pdev->dev; diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c index f43f2d952..9c2fc7ff1 100644 --- a/drivers/thunderbolt/tb.c +++ b/drivers/thunderbolt/tb.c @@ -10,7 +10,6 @@ #include #include #include -#include =20 #include "tb.h" #include "tb_regs.h" @@ -3302,75 +3301,6 @@ static const struct tb_cm_ops tb_cm_ops =3D { .disconnect_xdomain_paths =3D tb_disconnect_xdomain_paths, }; =20 -/* - * During suspend the Thunderbolt controller is reset and all PCIe - * tunnels are lost. The NHI driver will try to reestablish all tunnels - * during resume. This adds device links between the tunneled PCIe - * downstream ports and the NHI so that the device core will make sure - * NHI is resumed first before the rest. - */ -static bool tb_apple_add_links(struct tb_nhi *nhi) -{ - struct pci_dev *nhi_pdev =3D to_pci_dev(nhi->dev); - struct pci_dev *upstream, *pdev; - bool ret; - - if (!x86_apple_machine) - return false; - - switch (nhi_pdev->device) { - case PCI_DEVICE_ID_INTEL_LIGHT_RIDGE: - case PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C: - case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI: - case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI: - break; - default: - return false; - } - - upstream =3D pci_upstream_bridge(nhi_pdev); - while (upstream) { - if (!pci_is_pcie(upstream)) - return false; - if (pci_pcie_type(upstream) =3D=3D PCI_EXP_TYPE_UPSTREAM) - break; - upstream =3D pci_upstream_bridge(upstream); - } - - if (!upstream) - return false; - - /* - * For each hotplug downstream port, create add device link - * back to NHI so that PCIe tunnels can be re-established after - * sleep. - */ - ret =3D false; - for_each_pci_bridge(pdev, upstream->subordinate) { - const struct device_link *link; - - if (!pci_is_pcie(pdev)) - continue; - if (pci_pcie_type(pdev) !=3D PCI_EXP_TYPE_DOWNSTREAM || - !pdev->is_pciehp) - continue; - - link =3D device_link_add(&pdev->dev, nhi->dev, - DL_FLAG_AUTOREMOVE_SUPPLIER | - DL_FLAG_PM_RUNTIME); - if (link) { - dev_dbg(nhi->dev, "created link from %s\n", - dev_name(&pdev->dev)); - ret =3D true; - } else { - dev_warn(nhi->dev, "device link creation from %s failed\n", - dev_name(&pdev->dev)); - } - } - - return ret; -} - struct tb *tb_probe(struct tb_nhi *nhi) { struct tb_cm *tcm; @@ -3400,7 +3330,7 @@ struct tb *tb_probe(struct tb_nhi *nhi) * before the PCIe/USB stack is resumed so complain here if we * found them missing. */ - if (!tb_apple_add_links(nhi) && !tb_acpi_add_links(nhi)) + if (!tb_pci_add_links(nhi) && !tb_acpi_add_links(nhi)) tb_warn(tb, "device links to tunneled native ports are missing!\n"); =20 return tb; diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h index ec9192b61..6a285fe7f 100644 --- a/drivers/thunderbolt/tb.h +++ b/drivers/thunderbolt/tb.h @@ -1506,6 +1506,7 @@ static inline bool usb4_port_device_is_offline(const = struct usb4_port *usb4) } =20 void tb_check_quirks(struct tb_switch *sw); +bool tb_pci_add_links(struct tb_nhi *nhi); =20 #ifdef CONFIG_ACPI bool tb_acpi_add_links(struct tb_nhi *nhi); --=20 2.43.0 From nobody Mon Sep 28 19:34:06 2026 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2194449EB6 for ; Tue, 18 Aug 2026 09:50:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787046627; cv=none; b=V/58GqsAqHvkmZkbuP+B5gZ1LYKQVEdr0KvrSnl2a9DCkTq/YKNV8Llz2Ra4mLjGTAPeumjFwphtwMMktiW7LVSX2Bvm24spDc+i8CvLAfrv0LKvSY0ivd81yJdx+xccrTwkHZQRypGAOgdnK+Q/8HuwajOYcJ0TDeB38V0RyBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787046627; c=relaxed/simple; bh=GD1Vc4R//+edz5nsQcN4ZexU13rPFqIR8OXVB9M60EU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DcWV+L2pUPu9/2dBdtKpDwRbmtpmmW9gCy9lOhL+J7ecWC1ZYiJ7iPXDD1TDY8V5V4vwEAf4tvcWUYdwQ4d9cyVtY414hEM+2bD9PT6zo+qNYJJ7u7QwYW9UDgCPUzMvE/L4K5odNQ1lxPl2JWe7Y4GFQ6BMmuUhaCMrdGSWwzI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=tDSUiRWy; arc=none smtp.client-ip=209.85.210.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tDSUiRWy" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-8487b7b3fc8so4742228b3a.3 for ; Tue, 18 Aug 2026 02:50:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787046625; x=1787651425; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UcNrYIKS7I8Ey6PthAcBWgTxm4WMphn6yPUGDS65t7E=; b=tDSUiRWytU0QA8uLWJ699OOt+0AV/PHVcSpYRwOA9iyzuEchs71nXycJwi8lPqT2Xg h6vL81AyB3IA4PC7y1l6rzacxgLtyJLR8yMUFFf+fassgGnEwSFGHwAAep/GNpkcAXZj sb0iNIhAboDsEfbpr97+PxT3xwgWOaqUgK4NugAFJpNKnx8p2m9Hw11ittB5IJH/u9XI gQ5TYqfd+XHEDNE3cPAiT552dQBgWT/rpMeJ4TS5X8HvnF+rOJ8j1J5PWenBSOYBacR1 /anXL3iNyErjCUESnv4xR6xxfDw6wFFuzm57IfSRStviCcYs/XwwNRiq8YtXI78TUbRy zNug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787046625; x=1787651425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=UcNrYIKS7I8Ey6PthAcBWgTxm4WMphn6yPUGDS65t7E=; b=UpiCAnZGEBSlPJGHbguqcgnCqP9n1bjryROlSWExMBJnoBR46s615vLVsTJybP2pyc 1K45WAEXewt1B4UPxV83o2CuvUNWXrPpIznOCdXyWiifAMBHqFYFsq7JG7irOamwOwVq cKuyf+MjjG/tOfwt/crxxiWq4uA6Wf5MHwoUw/+o0HrqsFryjEl6WZn44a+Xn1j1pfTz LaEol8wjZm9/jHsn2jQZP5/THjBddbSwfFtWSwhHlBRlHKdxl8z4bm1xyRtdXcLEdk+2 OOAnZpkC7CY0w2FoBfDFTBSmunzGBKiruXr1MdQbcJqI5j50vgLxQK4gir+eTw99FiiJ haVg== X-Forwarded-Encrypted: i=1; AHgh+RoMzZ7jGsGTAl4Y1wQVTprcsS5HGfVusUpoUClN2iiM9JEtVEbbBB0qEjpozVx4jKz9WkNipPcdTFLDqiM=@vger.kernel.org X-Gm-Message-State: AOJu0YwsP5zMDk6eCPsU/37DLHnOqiwSfi8zxOgvqn1JMB9cvfoKUm+V 6he2QeHd3Vpl5EW+ykp6Iw1B6uBGqB7vJtxscYc6M3hT7KBvaF6nKT0= X-Gm-Gg: AR+sD122j/vTuy1REb+HN3gXRdbWJ5GZZ7j6sWXX1KvW4s3nRu9whZqBFHx3IZi+vB3 M3s3SIoEKbI14BfnICH1nUc2b8kEC4JJbR4JbYMsSbXy4Isgi/mpI+C50WWMt8Ba+PCE/dyT3g4 6nZzxdSmih9Kb9UFB7awWHajo9an5zGkCvoVPxklyq9QoqWKzJniE6+w1Zqw/pqqxmnjfLe7d6L cW4c9xfpCP9FfKc56jadvp4AA2csSduB4bbbDfJUUisVwHtlZusTDWCtjbXNsztyF+yXBFFYnIN Td/uo+REbNJjW5+NOHiel0XoRkzjWjjuNd72n/ELr4SQj9d4vTVk9hxZ7F5wlRi0s2oDCIrfAaU aUhExa5tawwS4HVXuKOTQy0Ee55nH+lKbSmICBMf+vXKX5J16svnaTVWx5WwzoYbtD/5YTXT3oP KTFTMxdNgPng+z9dV1wxaGUxa52m/6L6ueb1ZK8MZe73AaE2p0qklMzSXKMPgdLCJhtprpdGclO BsOmWoehC0h+sbg7P8aAOA= X-Received: by 2002:a05:6a20:4311:b0:3b3:26aa:5455 with SMTP id adf61e73a8af0-3ccda9f9485mr8850496637.13.1787046625023; Tue, 18 Aug 2026 02:50:25 -0700 (PDT) Received: from at-Standard-PC-Q35-ICH9-2009.. ([14.97.72.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-326798cb9f5sm18466759eec.13.2026.08.18.02.50.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 02:50:24 -0700 (PDT) From: Atharva Tiwari To: Cc: Atharva Tiwari , Andreas Noever , Mika Westerberg , Yehezkel Bernat , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v9 2/3] thunderbolt: Add device links for Apple machines with Titan Ridge Date: Tue, 18 Aug 2026 05:50:03 -0400 Message-ID: <20260818095010.1857-3-atharvatiwarilinuxdev@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818095010.1857-1-atharvatiwarilinuxdev@gmail.com> References: <20260818095010.1857-1-atharvatiwarilinuxdev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add device links for Apple machines with the Titan Ridge thunderbolt controller. To add device links on Titan ridge, the discrete method is used. Signed-off-by: Atharva Tiwari --- drivers/thunderbolt/pci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/thunderbolt/pci.c b/drivers/thunderbolt/pci.c index 83a4e1ba9..945e553dc 100644 --- a/drivers/thunderbolt/pci.c +++ b/drivers/thunderbolt/pci.c @@ -509,6 +509,8 @@ bool tb_pci_add_links(struct tb_nhi *nhi) case PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C: case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI: case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI: + case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_NHI: + case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_NHI: return tb_pci_add_links_discrete(nhi_pdev); default: return false; --=20 2.43.0 From nobody Mon Sep 28 19:34:06 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 402FA43BDBC for ; Tue, 18 Aug 2026 09:50:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787046631; cv=none; b=rFhTGNnZoG5VjWpLOU8VoFwuNa8hIIc8qaL8uV2fe6ipXluXMAsj/OonVg0smIpm9WsBFpWsUdbPfOaXzDY+efQjtpBb7bhQC1/aa/k25zSJQAmNYly901L2TF+z6XoWI4bDRi3udIZRD7rq9YpKrclln3dqltUljfvFTS3d8Cs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787046631; c=relaxed/simple; bh=HcpByxAQDcFBFS1iZYTXysptjWMt0ebtKELnEXEThjg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nQ8QFUUytWSxDlq9CVrCndPOQmlnD1B066fDeOm4eVdVdIjjHaDjcHLPpEyHPgnpmaOgKeW57lmcQKWpL3or3/RcBwc2UMxpb5WU+tWv4fwmdBjh6byGE3m/M1K/4uU8uaac8bosV6D/ETRKFLMhpe53USvJu8Kx+/mQhcmpsd0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=pRx8fq79; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pRx8fq79" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2cacf197759so60571875ad.2 for ; Tue, 18 Aug 2026 02:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787046630; x=1787651430; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tZFHBXGZUMkxzk8eLLV1Kkc86VgN87uR+OevDtKNiZQ=; b=pRx8fq79UzThhUombIBC52DoYCM/NVCEKqEZBD67SSyFKrCBR6sU1HOvbXEy14mX6R TX1UgypMae4vSMlvSJ98RZJ4VLGXlR1jO9YwRIaJcufpW43jxg7mx4dZ5Mx9XRHOpskA F9+fFRrfRQtwTGanf2RbZtuoo03J1OlSA+7s3HM0xWM436+uG6rwG/FzF8MRECs4X0y9 rlnQXYV1Yx9MjMlIhxNwUsr5zQOZH5rigQwdWxQZFD93Ho16Go9AnM7JegqIOBvvCNdv e+v2gbHFdxZLH/FqikvYTq7obxfFyqiTgPClTpNh5251SAbZJ9qJWgxri8sT/+ClKd88 CV8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787046630; x=1787651430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tZFHBXGZUMkxzk8eLLV1Kkc86VgN87uR+OevDtKNiZQ=; b=TB6FOc8Qi81CZzVhHSJo3quVtJwQhhpVSXItvSL5KtkuplAFJZi7PeZMzo586hoeo3 w8h0Dpoxaxci68Rj0u2jvCpyB8hJF8JnRJS8w8gHaRwepbx9dNzmJJa1g5eBBweqsKZj 02k9KlPPw5g5rIbZCq5aGvrjWKDvUDpYWchRh+uNJmdc3YLEOUCMrbX93hca0SAHXyg/ zdpZWWWzqjbotTf3EkaLZf3CMqVI4G7P9HhqKTMpwAVxU26grKxqbD8MCx8+0ZbH2qzl wEvB9whu445rcEbwwRIdN7qQVFOjBdw7YJovUh+3kKcr436oBLx4bBanu+PRmYQlQb61 DmNA== X-Forwarded-Encrypted: i=1; AHgh+Rohd/QZ7nLuHx+TpkgJZHztfF6qykDn17GAm46XAHx9s/7D4HYY9ICJ7aITA2ceRkj1MFiAO+Jm4+GOY1Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxM0eoCunBuvbm83OIdfEdoCyrE8fTFazN6nxOoE06ShXtBYX7O MWKYPRzr6yY31b+c4VgNKuJvnLZcQT7EDlYhXGXdgE9RsvQamNIOxgg= X-Gm-Gg: AR+sD10M2M7+XqWgHrELD4WiE3icLzodX4W/cap0yk+jYTBo8M13D0u/Af3fP3nlgbB dO5Uzyu6p7PRtyKlI+Njy/PmONGKtZo/ypuAJALRk15o8pYugjNtda/PtWFV09+9C3AzlXroqVi RwWACiTbvxmpPTN5tcuB0qFSs+hxwfjg/Lxo17r9lyIpF7jW+QaHgbJeQhmLeGyiYHpoG5YrEoU 00jKeUO6Wd0d/qwsEsQaVrkkc/YJW3RLnB/6ArB7SU8jOb+YZq/Oyu+bciE0RY1p/joBOyrxGDa 5Hvte1IyTfBxtVXjIcvaBogWm7H9sn7uZb1vEGtyECZSBsSrr0FrGVnn8wzUqOHJDVzAuRpTV4f FYiBVupe/kBM1npkah5IL/r6K/SkrldWWAwZtovdrGUkZ69miODaxeCwsPKqb6ar/dHfFRyYXtl AQ7Vuln4bDqjAeclo70z43u95VUhJ499+UwC2OqEEMfSLq52BmiPy8blcGZKlnMgrI39FyoiiyP hajc5v3H31Ib5zOjP+T4JE= X-Received: by 2002:a17:903:98b:b0:2d3:14c6:2372 with SMTP id d9443c01a7336-2d3b080bf23mr406145225ad.1.1787046629608; Tue, 18 Aug 2026 02:50:29 -0700 (PDT) Received: from at-Standard-PC-Q35-ICH9-2009.. ([14.97.72.18]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-326798cb9f5sm18466759eec.13.2026.08.18.02.50.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 02:50:29 -0700 (PDT) From: Atharva Tiwari To: Cc: Atharva Tiwari , Alexander Fischer , Andre Eikmeyer , Andreas Noever , Mika Westerberg , Yehezkel Bernat , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v9 3/3] thunderbolt: Add device links for Apple systems with Icelake thunderbolt Date: Tue, 18 Aug 2026 05:50:04 -0400 Message-ID: <20260818095010.1857-4-atharvatiwarilinuxdev@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818095010.1857-1-atharvatiwarilinuxdev@gmail.com> References: <20260818095010.1857-1-atharvatiwarilinuxdev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Ice Lake Thunderbolt NHI That are on some Macs. The NHI and its associated PCIe Root Ports all sit directly on the Root Complex with no upstream port. Identify the tunneled PCIe Root Ports by their PCI IDs and create device links back to the NHI so that PCIe tunnels can be re-established after sleep. Tested-by: Alexander Fischer Co-developed-by: Andre Eikmeyer Signed-off-by: Andre Eikmeyer Signed-off-by: Atharva Tiwari --- drivers/thunderbolt/pci.c | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/thunderbolt/pci.c b/drivers/thunderbolt/pci.c index 945e553dc..885fb9966 100644 --- a/drivers/thunderbolt/pci.c +++ b/drivers/thunderbolt/pci.c @@ -490,6 +490,45 @@ static const struct tb_nhi_ops icl_nhi_ops =3D { .init_interrupts =3D nhi_pci_init_msi, }; =20 +static bool tb_pci_add_links_icl(struct pci_dev *nhi_pdev) +{ + struct pci_dev *pdev; + const struct device_link *link; + bool ret =3D false; + + for_each_pci_bridge(pdev, nhi_pdev->bus) { + if (!pci_is_pcie(pdev) || + pci_pcie_type(pdev) !=3D PCI_EXP_TYPE_ROOT_PORT) + continue; + + switch (pdev->device) { + /* Ice Lake Thunderbolt 3 PCIe Root Ports */ + case 0x8a1d: + case 0x8a1f: + case 0x8a21: + case 0x8a23: + break; + default: + continue; + } + + link =3D device_link_add(&pdev->dev, &nhi_pdev->dev, + DL_FLAG_AUTOREMOVE_SUPPLIER | + DL_FLAG_PM_RUNTIME); + if (link) { + dev_dbg(&nhi_pdev->dev, "created link from %s\n", + dev_name(&pdev->dev)); + ret =3D true; + } else { + dev_warn(&nhi_pdev->dev, + "device link creation from %s failed\n", + dev_name(&pdev->dev)); + } + } + + return ret; +} + /* * During suspend the Thunderbolt controller is reset and all PCIe * tunnels are lost. The NHI driver will try to reestablish all tunnels @@ -512,6 +551,9 @@ bool tb_pci_add_links(struct tb_nhi *nhi) case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_NHI: case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_NHI: return tb_pci_add_links_discrete(nhi_pdev); + case PCI_DEVICE_ID_INTEL_ICL_NHI0: + case PCI_DEVICE_ID_INTEL_ICL_NHI1: + return tb_pci_add_links_icl(nhi_pdev); default: return false; } --=20 2.43.0