Why is Thunderbolt 3 limited to 2.5 GT/s on Linux?

Timur Kristóf timur.kristof at gmail.com
Fri Jun 28 13:33:56 UTC 2019


> Well that's the extension PCIe downstream port. The other one is
> 04:01.0.
> 
> Typically 04:00.0 and 04:00.2 are used to connect TBT (05:00.0) and
> xHCI
> (39:00.0) but in your case you don't seem to have USB 3 devices
> connected to that so it is not present. If you plug in USB-C device
> (non-TBT) you should see the host router xHCI appearing as well.
> 
> This is pretty standard topology.
> > 
> > Not sure I understand correctly, are you saying that TB3 can do 40
> > Gbit/sec even though the kernel thinks it can only do 8 Gbit / sec?
> 
> Yes the PCIe switch upstream port (3a:00.0) is connected back to the
> host router over virtual Thunderbolt 40Gb/s link so the PCIe gen1
> speeds
> it reports do not really matter here (same goes for the downstream).
> 
> The topology looks like bellow if I got it right from the lspci
> output:
> 
>   00:1c.4 (root port) 8 GT/s x 4
>     ^
>     | real PCIe link
>     v
>   03:00.0 (upstream port) 8 GT/s x 4
>   04:04.0 (downstream port) 2.5 GT/s x 4
>     ^
>     |  virtual link 40 Gb/s
>     v
>   3a:00.0 (upstream port) 2.5 GT/s x 4
>   3b:01.0 (downstream port) 8 GT/s x 4
>     ^
>     | real PCIe link
>     v
>   3c:00.0 (eGPU) 8 GT/s x 4
> 
> In other words all the real PCIe links run at full 8 GT/s x 4 which
> is
> what is expected, I think.


It makes sense now. This is hands down the best explanation I've seen
about how TB3 hangs together. Thanks for taking the time to explain it!

I have two more questions:

1. What is the best way to test that the virtual link is indeed capable
of 40 Gbit / sec? So far I've been unable to figure out how to measure
its maximum throughput.

2. Why is it that the game can only utilize as much as 2.5 Gbit / sec
when it gets bottlenecked? The same problem is not present on a desktop
computer with a "normal" PCIe port.




More information about the dri-devel mailing list