How to passthrough entire Thunderbolt port?

My motherboard has 2 Thunderbolt 4 ports. I’d like to pass entire port to VM (so that no matter what I connect to this port it’s gonna get seen by guest). There’s a lot of TB related pci-e devices listed by lspci and ngl I’m a bit afraid to just pass random pci-e bridges and other stuff that sounds quite important…

Here’s my lspci. I have HP Thunderbolt 3 docking station attached to one port. Second one is empty. That docking station has at least one usb controller (that SMedia), NetXtreme network card and one tb3 passthrough port.

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Milan IOMMU (rev 01)
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:03.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:03.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:03.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 7
01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)
02:00.0 Non-Volatile memory controller: Seagate Technology PLC FireCuda 530 SSD (rev 01)
03:00.0 Non-Volatile memory controller: Seagate Technology PLC FireCuda 530 SSD (rev 01)
04:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
05:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
06:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
07:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
07:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Starship USB 3.0 Host Controller
20:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
20:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Milan IOMMU (rev 01)
20:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
20:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:03.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
20:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
20:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
20:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
21:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
21:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)
22:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 01)
22:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 01)
22:00.2 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 01)
22:00.3 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 01)
24:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
25:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
25:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
25:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Starship USB 3.0 Host Controller
25:00.4 Audio device: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller
40:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
40:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Milan IOMMU (rev 01)
40:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
40:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
40:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
40:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
40:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
41:00.0 Ethernet controller: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
41:00.1 Ethernet controller: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
41:00.2 Ethernet controller: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
41:00.3 Ethernet controller: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
42:00.0 VGA compatible controller: NVIDIA Corporation TU104GL [Quadro RTX 4000] (rev a1)
42:00.1 Audio device: NVIDIA Corporation TU104 HD Audio Controller (rev a1)
42:00.2 USB controller: NVIDIA Corporation TU104 USB 3.1 Host Controller (rev a1)
42:00.3 Serial bus controller: NVIDIA Corporation TU104 USB Type-C UCSI Controller (rev a1)
43:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
44:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
60:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
60:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Milan IOMMU (rev 01)
60:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
60:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
60:03.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
60:03.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
60:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
60:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
60:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
61:00.0 PCI bridge: Intel Corporation Thunderbolt 4 Bridge [Maple Ridge 4C 2020] (rev 02)
62:00.0 PCI bridge: Intel Corporation Thunderbolt 4 Bridge [Maple Ridge 4C 2020] (rev 02)
62:01.0 PCI bridge: Intel Corporation Thunderbolt 4 Bridge [Maple Ridge 4C 2020] (rev 02)
62:02.0 PCI bridge: Intel Corporation Thunderbolt 4 Bridge [Maple Ridge 4C 2020] (rev 02)
62:03.0 PCI bridge: Intel Corporation Thunderbolt 4 Bridge [Maple Ridge 4C 2020] (rev 02)
63:00.0 USB controller: Intel Corporation Thunderbolt 4 NHI [Maple Ridge 4C 2020]
64:00.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
65:00.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
65:01.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
65:02.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
65:03.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
65:04.0 PCI bridge: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
66:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
67:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM57762 Gigabit Ethernet PCIe (rev 01)
97:00.0 USB controller: Intel Corporation Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]
cb:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse Switch Upstream
cc:01.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cc:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cc:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cc:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cc:08.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cc:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cc:0a.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
cd:00.0 USB controller: VIA Technologies, Inc. VL805/806 xHCI USB 3.0 Controller (rev 01)
ce:00.0 Non-Volatile memory controller: Shenzhen Unionmemory Information System Ltd. AM630 PCIe 4.0 x4 NVMe SSD Controller (rev 03)
cf:00.0 Network controller: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz (rev 1a)
d0:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 04)
d1:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
d2:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
d2:00.1 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
d2:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
d3:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
d4:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
d5:00.0 Non-Volatile memory controller: Shenzhen Unionmemory Information System Ltd. AM630 PCIe 4.0 x4 NVMe SSD Controller (rev 03)
d6:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GBASE-T (rev 02)
d6:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GBASE-T (rev 02)
d8:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
d9:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP

Is it doable to pass entire tb4 port?

The first thing would be to check if the port is in its own iommu group: PCI passthrough via OVMF - ArchWiki

Then, check the output of lstopo to see the topology of the devices (what is connected to what)

I don’t know which device IS port. That said my mobo puts everything in separate iommu groups so yeah it most likely is.

My lstopo isn’t very complete

Considering that I have like 140 lspci records it doesn’t seem to be all that complete. Doesn’t even include ASMedia USB controller anywhere (66:00.0)

text output with -v provides a bit more info but still plenty of stuff is missing.

HostBridge L#12 (buses=0000:[60-d9])
    PCIBridge L#13 (busid=0000:60:01.1 id=1022:1483 class=0604(PCIBridge) link=3.94GB/s buses=0000:[61-ca] PCIVendor="Advanced Micro Devices, Inc. [AMD]" PCIDevice="Starship/Matisse GPP Bridge")
      PCIBridge L#14 (busid=0000:61:00.0 id=8086:1136 class=0604(PCIBridge) link=3.94GB/s buses=0000:[62-ca] PCISlot=0 PCIVendor="Intel Corporation" PCIDevice="Thunderbolt 4 Bridge [Maple Ridge 4C 2020]")
        PCIBridge L#15 (busid=0000:62:01.0 id=8086:1136 class=0604(PCIBridge) link=1.00GB/s buses=0000:[64-96] PCIVendor="Intel Corporation" PCIDevice="Thunderbolt 4 Bridge [Maple Ridge 4C 2020]")
          PCIBridge L#16 (busid=0000:64:00.0 id=8086:1578 class=0604(PCIBridge) link=1.00GB/s buses=0000:[65-6a] PCISlot=1 PCIVendor="Intel Corporation" PCIDevice="DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]")
            PCIBridge L#17 (busid=0000:65:01.0 id=8086:1578 class=0604(PCIBridge) link=0.25GB/s buses=0000:[67-67] PCIVendor="Intel Corporation" PCIDevice="DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]")
              PCI L#15 (busid=0000:67:00.0 id=14e4:1682 class=0200(Ethernet) link=0.25GB/s PCIVendor="Broadcom Inc. and subsidiaries" PCIDevice="NetXtreme BCM57762 Gigabit Ethernet PCIe")
                Network L#12 (Address=3c:52:82:b6:92:0c) "enp103s0"

this seems like branch covering TB4 port. So at which level should I be able to “cut” it and passthrough to guest?

1 Like

I tried to pass 61:00 but KVM crashed with “cannot pass non-endpoint pci-e devices” error. Which sounds like denial of what I’m exactly trying to achieve.

Do you get this also when nothing is plugged in?

lspci -tv

You can’t pass a unit directly is by design mostly and not exactly a pci unit. At best you may have some function of the unit… ex: a dock and have finniky result.
Also, i invite to read the datasheet of the intel controller. You have 2 port, but only 1 controller. Like having an usb card with 8output… it still only 1 limited ic.

I would like to pass it dynamically. In a way that whatever I plug to tb3 port it’ll be handled by guest VM to provide “desktop-like” experience. It doesn’t really matter whether I’d pass one or two ports, whatever is easier would be fine. I’d just like it to feel “native” from guest VM perspective (even if it’s not technically native). In similar fashion to passing through entire USB controller.

I didn’t check that but it’d be highly impractical if physically unplugging everything would be requirement to get it to work.

-+-[0000:00]-+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
 |           +-00.2  Advanced Micro Devices, Inc. [AMD] Milan IOMMU
 |           +-01.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-01.1-[01]--+-00.0  NVIDIA Corporation GA102 [GeForce RTX 3090]
 |           |            \-00.1  NVIDIA Corporation GA102 High Definition Audio Controller
 |           +-02.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-03.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-03.1-[02]----00.0  Seagate Technology PLC FireCuda 530 SSD
 |           +-03.2-[03]----00.0  Seagate Technology PLC FireCuda 530 SSD
 |           +-03.3-[04]----00.0  Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
 |           +-03.4-[05]----00.0  Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
 |           +-04.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-05.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-07.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-07.1-[06]----00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
 |           +-08.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-08.1-[07]--+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
 |           |            \-00.3  Advanced Micro Devices, Inc. [AMD] Starship USB 3.0 Host Controller
 |           +-14.0  Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller
 |           +-14.3  Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge
 |           +-18.0  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 0
 |           +-18.1  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 1
 |           +-18.2  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 2
 |           +-18.3  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 3
 |           +-18.4  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 4
 |           +-18.5  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 5
 |           +-18.6  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 6
 |           \-18.7  Advanced Micro Devices, Inc. [AMD] Milan Data Fabric; Function 7
 +-[0000:20]-+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
 |           +-00.2  Advanced Micro Devices, Inc. [AMD] Milan IOMMU
 |           +-01.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-01.1-[21]--+-00.0  NVIDIA Corporation GA102 [GeForce RTX 3090]
 |           |            \-00.1  NVIDIA Corporation GA102 High Definition Audio Controller
 |           +-02.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-03.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-03.3-[22-23]--+-00.0  Intel Corporation Ethernet Controller X710 for 10GbE SFP+
 |           |               +-00.1  Intel Corporation Ethernet Controller X710 for 10GbE SFP+
 |           |               +-00.2  Intel Corporation Ethernet Controller X710 for 10GbE SFP+
 |           |               \-00.3  Intel Corporation Ethernet Controller X710 for 10GbE SFP+
 |           +-04.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-05.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-07.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-07.1-[24]----00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
 |           +-08.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           \-08.1-[25]--+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
 |                        +-00.1  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
 |                        +-00.3  Advanced Micro Devices, Inc. [AMD] Starship USB 3.0 Host Controller
 |                        \-00.4  Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller
 +-[0000:40]-+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
 |           +-00.2  Advanced Micro Devices, Inc. [AMD] Milan IOMMU
 |           +-01.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-01.1-[41]--+-00.0  Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
 |           |            +-00.1  Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
 |           |            +-00.2  Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
 |           |            \-00.3  Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet
 |           +-02.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-03.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-03.1-[42]--+-00.0  NVIDIA Corporation TU104GL [Quadro RTX 4000]
 |           |            +-00.1  NVIDIA Corporation TU104 HD Audio Controller
 |           |            +-00.2  NVIDIA Corporation TU104 USB 3.1 Host Controller
 |           |            \-00.3  NVIDIA Corporation TU104 USB Type-C UCSI Controller
 |           +-04.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-05.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-07.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           +-07.1-[43]----00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
 |           +-08.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
 |           \-08.1-[44]----00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
 \-[0000:60]-+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
             +-00.2  Advanced Micro Devices, Inc. [AMD] Milan IOMMU
             +-01.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             +-01.1-[61-ca]----00.0-[62-ca]--+-00.0-[63]----00.0  Intel Corporation Thunderbolt 4 NHI [Maple Ridge 4C 2020]
             |                               +-01.0-[64-96]----00.0-[65-6a]--+-00.0-[66]----00.0  ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
             |                               |                               +-01.0-[67]----00.0  Broadcom Inc. and subsidiaries NetXtreme BCM57762 Gigabit Ethernet PCIe
             |                               |                               +-02.0-[68]--
             |                               |                               +-03.0-[69]--
             |                               |                               \-04.0-[6a]--
             |                               +-02.0-[97]----00.0  Intel Corporation Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]
             |                               \-03.0-[98-ca]--
             +-02.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             +-03.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             +-03.1-[cb-d4]----00.0-[cc-d4]--+-01.0-[cd]----00.0  VIA Technologies, Inc. VL805/806 xHCI USB 3.0 Controller
             |                               +-02.0-[ce]----00.0  Shenzhen Unionmemory Information System Ltd. AM630 PCIe 4.0 x4 NVMe SSD Controller
             |                               +-04.0-[cf]----00.0  Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz
             |                               +-05.0-[d0-d1]----00.0-[d1]----00.0  ASPEED Technology, Inc. ASPEED Graphics Family
             |                               +-08.0-[d2]--+-00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
             |                               |            +-00.1  Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
             |                               |            \-00.3  Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
             |                               +-09.0-[d3]----00.0  Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
             |                               \-0a.0-[d4]----00.0  Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
             +-03.2-[d5]----00.0  Shenzhen Unionmemory Information System Ltd. AM630 PCIe 4.0 x4 NVMe SSD Controller
             +-03.3-[d6-d7]--+-00.0  Intel Corporation Ethernet Controller X710 for 10GBASE-T
             |               \-00.1  Intel Corporation Ethernet Controller X710 for 10GBASE-T
             +-04.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             +-05.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             +-07.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             +-07.1-[d8]----00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
             +-08.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
             \-08.1-[d9]----00.0  Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP

I suspect you’d need to pass through a controller which may handle more than one port?