Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Linux and Thunderbolt 2?

1,055 views
Skip to first unread message

Israel Brewster

unread,
Jan 26, 2015, 6:50:56 PM1/26/15
to
I have what I thought would be a basic question, but for which I am having a difficult time finding an answer: does the Linux kernel support Thunderbolt 2, specifically the intel "Falcon Ridge" (DSL5320) controller, or is there a way to make it work?

My company recently purchased a new SuperMicro server with the AOC-TBT-DSL5320 Thunderbolt 2 card, which uses the intel DSL5320 controller. Having read that the Linux kernel supported thunderbolt as of v3.10, I went ahead and installed CentOS and upgraded the kernel to v3.18.3. Unfortunately, there was no indication that the system even recognized I had the thunderbolt card installed, much less functioning. In digging deeper, I'm beginning to wonder if only the previous generation Thunderbolt - the "Cactus Ridge" controller - is actually supported. Someone else I asked found this in the Kconfig file:

[quote]
menuconfig THUNDERBOLT
tristate "Thunderbolt support for Apple devices"
depends on PCI
select CRC32
help
Cactus Ridge Thunderbolt Controller driver
This driver is required if you want to hotplug Thunderbolt devices on
Apple hardware.

Device chaining is currently not supported.

To compile this driver a module, choose M here. The module will be
called thunderbolt.
[/quote]

but nothing else referencing Thunderbolt, which would seem to indicate a limitation to the older thunderbolt controllers. On the other hand, I found this page: http://permalink.gmane.org/gmane.linux.kernel/1717419 which seems to indicate that a patch was available to make the Falcon Ridge controller work as well back in June of 2014 (although I don't find the actual patch), and this: http://www.gossamer-threads.com/lists/linux/kernel/1935522 which appears to indicate that all that needs to happen to support Falcon Ridge controllers is to add their PCI ID's. So what is the current state of affairs? Does the Kernel support Thunderbolt 2, and the help mentioning "Cactus Ridge" is simply out-of-date? Or is support limited to Thunderbolt 1 (for now at least)?

Thanks.

Theo Markettos

unread,
Jan 27, 2015, 12:55:00 PM1/27/15
to
Israel Brewster <macav...@gmail.com> wrote:
> but nothing else referencing Thunderbolt, which would seem to indicate a
> limitation to the older thunderbolt controllers. On the other hand, I
> found this page: http://permalink.gmane.org/gmane.linux.kernel/1717419
> which seems to indicate that a patch was available to make the Falcon
> Ridge controller work as well back in June of 2014 (although I don't find
> the actual patch), and this:
> http://www.gossamer-threads.com/lists/linux/kernel/1935522 which appears
> to indicate that all that needs to happen to support Falcon Ridge
> controllers is to add their PCI ID's. So what is the current state of
> affairs? Does the Kernel support Thunderbolt 2, and the help mentioning
> "Cactus Ridge" is simply out-of-date? Or is support limited to
> Thunderbolt 1 (for now at least)?

Since Thunderbolt is 'just' a mux of DisplayPort and PCIe, where the mux is
negotiated by the microcontrollers on the TB adaptors, it's possible that
it's transparent from the host side. Have you plugged in a TB device (eg an
Apple TB to Ethernet or Firewire dongle) and does it show in dmesg or lspci?
The module you mentioned suggests it's necessary for hotplug to work, but
perhaps it'll work without it if you boot with the TB device plugged in?
It wouldn't surprise me if an empty TB port showed up as nothing at all
because there was nothing to negotiate it as PCIe.

According to the Cactus Ridge commit:
<quote>
Thunderbolt hotplug is supposed to be handled by the firmware. But Apple
decided to implement thunderbolt at the operating system level. The
firmare only initializes thunderbolt devices that are present at boot
time. This driver enables hotplug of thunderbolt of non-chained
thunderbolt devices on Apple systems with a cactus ridge controller.

This first patch adds the Kconfig file as well the parts of the driver
which talk directly to the hardware (that is pci device setup, interrupt
handling and RX/TX ring management).
</quote>
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/thunderbolt/nhi.c?id=16603153666d22df544ae9f9b3764fd18da28eeb

which suggests that Linux doesn't need to do anything, except for Apple
hardware which is 'special'. It appears switch.c does have the change
suggested in response to Matthew Garrett's patch you cited (ie only 3 legacy
TB chip IDs need special treatment, the rest are normal).

Theo
0 new messages