I'm having difficulty in passing a Gigabyte (GB) Thunderbolt Titan Ridge PCIe card.
The machine is a GB TRX40 Designare with an add-on TB3 Titan Ridge PCIe card. The guest OS running under Proxmox is macOS Mojave. I've managed to pass GPU, add-on Aquantia Ethernet card, and various other internal controllers (SATA, Ethernet and BT/Wifi) successfully and these are running well under macOS. However, I cannot get the Thunderbolt card to pass; well, not all parts, that is.
Before describing more details, I've tried the card in various slots and from internet searches the optimum seems to be slot-2 (nevertheless, I see similar results to those shown below for all tested slots).
To show the distribution of the Thunderbolt card, you can see the various sections, which are from 01:00 to 0d:00, with an lspci command:
From the above, you can see that 03:00 and 0d:00 have their drivers correctly substituted by vfio-pci (the original drivers were thunderbolt and xhci_hcd). And these 2 sections are passed through to the macOS system. However, the whole TB3 'tree' does not appear in the macOS as the 01:00 and 02:00 sections are missing. In macOS, these sections seems to correspond to internal TB3 bridges. Accordingly, when these sections are missing, Thunderbolt does not work. The basic problem, then, is that the whole device is not being passed.
If the tree command is run, the following is seen:
The sections that are not passed, 01:00.0 and 02:00.0x.0, have pcieport drivers. Blacklisting or not blacklisting the pcieport driver has no effect. In fact, if either 01:00 or 02:00 are entered into the VM using "hostpci9: 1:00.0,pcie=1" (±rombar), then the VM fails to run, generating an error that says:
The file named "12" that seems to be missing in /dev/vfio/, is the IOMMU group for 1:00.0. And if 02:00.0 is attempted to be passed, it gives a similar error saying file "13" is missing from that same directory, which is 02:00.0's IOMMU group number. Meanwhile, the sections that are passed, have files in this directory for their IOMMU groups, namely 17 and 18. The files presently in this directory are: 17 18 20 34 35 37 57 59 60 63 64 65 67 78 vfio.
The complete TB3 IOMMU groups can be seen when "ls /sys/kernel/iommu_groups/*/devices" is run:
I'd truly appreciate any help in getting the whole TB device passed. Thanks!
The machine is a GB TRX40 Designare with an add-on TB3 Titan Ridge PCIe card. The guest OS running under Proxmox is macOS Mojave. I've managed to pass GPU, add-on Aquantia Ethernet card, and various other internal controllers (SATA, Ethernet and BT/Wifi) successfully and these are running well under macOS. However, I cannot get the Thunderbolt card to pass; well, not all parts, that is.
Before describing more details, I've tried the card in various slots and from internet searches the optimum seems to be slot-2 (nevertheless, I see similar results to those shown below for all tested slots).
To show the distribution of the Thunderbolt card, you can see the various sections, which are from 01:00 to 0d:00, with an lspci command:
Code:
Addresses Before TB3 Section:
00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex [1022:1480]
Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex [1022:1480]
00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU [1022:1481]
Subsystem: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU [1022:1481]
00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:01.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge [1022:1483]
Kernel driver in use: pcieport
00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:04.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:05.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:07.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:07.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] [1022:1484]
Kernel driver in use: pcieport
00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge [1022:1482]
00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B] [1022:1484]
Kernel driver in use: pcieport
00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 61)
Subsystem: Gigabyte Technology Co., Ltd FCH SMBus Controller [1458:5001]
Kernel modules: i2c_piix4, sp5100_tco
00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)
Subsystem: Gigabyte Technology Co., Ltd FCH LPC Bridge [1458:5001]
00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 0 [1022:1490]
00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 1 [1022:1491]
00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 2 [1022:1492]
00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 3 [1022:1493]
Kernel driver in use: k10temp
Kernel modules: k10temp
00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 4 [1022:1494]
00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 5 [1022:1495]
00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 6 [1022:1496]
00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Starship Device 24; Function 7 [1022:1497]
TB3 Address Sections:
01:00.0 PCI bridge [0604]: Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] [8086:15ea] (rev 06)
Kernel driver in use: pcieport
02:00.0 PCI bridge [0604]: Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] [8086:15ea] (rev 06)
Kernel driver in use: pcieport
02:01.0 PCI bridge [0604]: Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] [8086:15ea] (rev 06)
Kernel driver in use: pcieport
02:02.0 PCI bridge [0604]: Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] [8086:15ea] (rev 06)
Kernel driver in use: pcieport
02:04.0 PCI bridge [0604]: Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018] [8086:15ea] (rev 06)
Kernel driver in use: pcieport
03:00.0 System peripheral [0880]: Intel Corporation JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018] [8086:15eb] (rev 06)
Subsystem: Device [2222:1111]
Kernel driver in use: vfio-pci
Kernel modules: thunderbolt
0d:00.0 USB controller [0c03]: Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] [8086:15ec] (rev 06)
Subsystem: Device [2222:1111]
Kernel driver in use: vfio-pci
BTW, the vfio.conf file contains the TB sections: "options vfio-pci ids=8086:15ea,8086:15eb,8086:15ec"
If the tree command is run, the following is seen:
Code:
\-[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
+-00.2 Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
+-01.0 Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
+-01.3-[01-16]----00.0-[02-16]--+-00.0-[03]----00.0 Intel Corporation JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
| +-01.0-[04-0c]--
| +-02.0-[0d]----00.0 Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
| \-04.0-[0e-16]--
vm: -device vfio-pci,host=0000:01:00.0,id=hostpci9,bus=ich9-pcie-port-10,addr=0x0: vfio 0000:01:00.0: failed to open /dev/vfio/12: No such file or directory
TASK ERROR: start failed: QEMU exited with code 1
TASK ERROR: start failed: QEMU exited with code 1
The complete TB3 IOMMU groups can be seen when "ls /sys/kernel/iommu_groups/*/devices" is run:
Code:
/sys/kernel/iommu_groups/12/devices: 0000:01:00.0
/sys/kernel/iommu_groups/13/devices: 0000:02:00.0
/sys/kernel/iommu_groups/14/devices: 0000:02:01.0
/sys/kernel/iommu_groups/15/devices: 0000:02:02.0
/sys/kernel/iommu_groups/16/devices: 0000:02:04.0
/sys/kernel/iommu_groups/17/devices: 0000:03:00.0
/sys/kernel/iommu_groups/18/devices: 0000:0d:00.0
I'd truly appreciate any help in getting the whole TB device passed. Thanks!
Last edited: