PDF guide and patches for making Linux v5.3 kernel to work with Thunderbolt 3 add-in card.
Please follow this guide at your own risk. If you do not accept the risk, then please do not use this guide, and instead buy an Intel system with Thunderbolt 3 support.
It is not perfect and I have been procrastinating to get it out for months. But the zip archive contains a guide on applying my Linux patches and creating a kernel with working Thunderbolt hot-plug with a Thunderbolt 3 add-in card (sorry, Titan Ridge only for now) on any computer. Sorry, Windows will only work if the devices are attached at boot - there is nothing I can do about that one without fancy chainloaders, which are well outside of my experience.
I removed the last patch for enabling Alpine Ridge Thunderbolt 3 add-in cards for now, as it is finicky and not up to standards. Plus, I am away from my test rig where I can make sure it works. I will add it later.
If I do not do this now, I will never get around to it.
Please let me know if there are any mistakes or problems.
See the guide for known problems and notes. The biggest issue is no suspend / sleep - it will almost certainly crash the computer if you suspend, so make sure you disable sleep.
Sorry it took so long.
Oops, forgot to add pin numbering image in PDF. I used to have to jump GC-TITAN RIDGE to be detectable on startup - but strangely, I have recently found it is no longer needed. I am not sure what changed.
___ __/ \__ |o o o o o| |_________| 1 2 3 4 5
Progress on getting accepted into Linux mainline kernel:
1. Got the new kernel parameters accepted to specify mmio and mmio_pref separately: https://lkml.org/lkml/2019/10/23/726
2. Got the bug fix for double allocation accepted: https://lkml.org/lkml/2019/11/14/627
These will appear in Linux v5.5 in a few weeks. If you are willing to run a release candidate kernel (could have problems) then Ubuntu will compile it and put it here (link broken until they do):
These changes are enough to hot-add any single Thunderbolt 3 device, including an eGPU. Daisy chain will not work, yet. If you want daisy chaining, then you will have to compile Linux v5.3 kernel with the zip.
Bjorn Helgaas (Linux PCI subsystem maintainer) says he wants to wait for early in the next cycle to accept the rest, because that way they will get more testing before making it into a Linux v5.6 release candidates.
Assuming none of the patches cause problems with other people's different hardware and do not get pulled (I am confident they will not, I have been using these on my computers for many months) then Linux v5.6 will have all of the fixes needed.