Feature request: Use the PCIe devices on Thunderbolt (aka PCIe hotplug?)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Feature request: Use the PCIe devices on Thunderbolt (aka PCIe hotplug?)

Joseph Mayer
(Maybe to be moved to misc@)

Dear OpenBSD tech@,

Thunderbolt support would be awesome. Especially it would allow the use
of additional M.2 NVMe SSD:s on a laptop at full performance.

Thunderbolt support would also allow the use of an AMDGPU via a PCIe
chassi, as well as enable the use of 10gbps Ethernet on laptops [1].


While I like to use Thunderbolt for this pragmatic reason, also Intel
apparently promises license etc. generosity to computer makers, which
certainly does not hurt. [2]


FreeBSD has Thunderbolt support. It appears to me that they call it
"PCIe Hot plug". [3]

It was implemented 2015 by John-Mark Gurney <[hidden email]>.

Not sure if a TB device must be attached on boot and cannot be
detached, anyhow if that is the case then still totally fine.

NetBSD appears to have support also but I don't find details.


Security-wise Thunderbolt without IOMMU is correlated with physical
break-in attack vectors, anyhow that is commonly fine. [4]

One Thunderbolt 3 controller provides 22gbps of PCIe data bandwidth to
all the one or two Thunderbolt ports it exports, which is fine. [5]
Many Thunderbolt devices allow daisy chaining. An "eGFX" certified [6]
Thunderbolt PCIe chassi (such as [7]) has absolutely no performance
advantage over a normal Thunderbolt PCIe chassi (such as [8]),
including for eGPU (e.g. AMDGPU) use.

Joseph

[1] The lowest cost and most common 10gbps Ethernet Thunderbolt chip
is Aquantia AQC107S. There are also some adapters based on a normal
PCIe 10gbps chip and a separate Thunderbolt to PCIe controller.

[2] https://www.theregister.co.uk/2017/05/24/intel_thunderbolt_3forall/

[3] https://www.freebsd.org/news/status/report-2015-01-2015-03.html#Adding-PCIe-Hot-plug-Support
https://www.freebsd.org/news/status/report-2015-07-2015-09.html#Adding-PCIe-Hot-plug-Support

[4] https://www.osnews.com/story/129501/thunderbolt-enables-severe-security-threats/

[5] And not 40gbps as common marketing makes it sound like.

[6] https://thunderbolttechnology.net/egfx
https://thunderbolttechnology.net/blog/the-difference-between-egfx-and-egpu
= marketing mumbo jumbo.

[7] https://www.asus.com/Graphics-Cards-Accessories/XG-STATION-PRO/

[8] https://www.akitio.com/expansion/node-pro

Reply | Threaded
Open this post in threaded view
|

Re: Feature request: Use the PCIe devices on Thunderbolt (aka PCIe hotplug?)

John-Mark Gurney
Joseph Mayer wrote this message on Sat, Mar 21, 2020 at 02:57 +0000:

> Thunderbolt support would be awesome. Especially it would allow the use
> of additional M.2 NVMe SSD:s on a laptop at full performance.
>
> Thunderbolt support would also allow the use of an AMDGPU via a PCIe
> chassi, as well as enable the use of 10gbps Ethernet on laptops [1].
>
>
> While I like to use Thunderbolt for this pragmatic reason, also Intel
> apparently promises license etc. generosity to computer makers, which
> certainly does not hurt. [2]
>
>
> FreeBSD has Thunderbolt support. It appears to me that they call it
> "PCIe Hot plug". [3]

From my understanding, Thunderbolt is different from PCIe Hot Plug...

PCIe the spec itself has hot plug capabilities, and this is what is
used for laptops w/ ExpressCards and some servers...

Thunderbolt from my understanding is more complicated due to
display routing and other related features and FreeBSD does NOT
yet have support for it.

> It was implemented 2015 by John-Mark Gurney <[hidden email]>.

John Baldwin, [hidden email] ended up implementing it differently
and not using the code I had written, so he is probably a better
person to ask on the current state of the code..

This was done via:
https://reviews.freebsd.org/D6136?id=15683

I have heard that there may be a proper ThunderBolt support coming
to FreeBSD in the near future, but not sure exactly when...

> Not sure if a TB device must be attached on boot and cannot be
> detached, anyhow if that is the case then still totally fine.

The devctl command can detach a device.  This allows ejecting
devices w/o crashing the system for removal, or allowing you to detach
a device and pass it through to a bhyve vm, etc.  Not all drivers are
written to allow detaching...

> NetBSD appears to have support also but I don't find details.
>
> Security-wise Thunderbolt without IOMMU is correlated with physical
> break-in attack vectors, anyhow that is commonly fine. [4]

From my understanding, all PCIe switches have a built in IOMMU, so
this shouldn't be a major security issue.  I have not done indepth
analysis to verify this though.  and this also depends upon the
PCIe switch not having bugs...

There is a relatively inexpensive USB3 to PCIe bridge that lets you
issue arbitrary PCIe commands that could be used to verify the security
of implementations...

> One Thunderbolt 3 controller provides 22gbps of PCIe data bandwidth to
> all the one or two Thunderbolt ports it exports, which is fine. [5]
> Many Thunderbolt devices allow daisy chaining. An "eGFX" certified [6]
> Thunderbolt PCIe chassi (such as [7]) has absolutely no performance
> advantage over a normal Thunderbolt PCIe chassi (such as [8]),
> including for eGPU (e.g. AMDGPU) use.

Good luck!

--
  John-Mark Gurney Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."