Thunderbolt: Implementing shared IO between hosts

Hello all,

I am interested in developing a small driver that would facilitate host-to-host communication via Thunderbolt 4/5. While I am aware of features such as Thunderbolt Bridge/Thunderbolt Networking, I find that for my application the overhead is too great. I am interested in sharing a simple, static memory buffer between the two hosts for IO and with some synchronisation primitives. The idea being that the communication is facilitated between different platforms.

Would it be possible to develop a driver/service like this? Currently, going through the documentation, to use PCIDriverKit specifying a Vendor and Product Ids is required, so I doubt that this is a viable path.

I know that Linux exposes the "XDomain" protocol to announce thunderbolt services (This is the same protocol that is used in macOS to discover Thunderbolt Networking peers). Is this functionality exposed to macOS driver developers?

Would it be possible to develop a driver/service like this?

No, I don't think this is currently possible. My recommendation would be that you file an enhancement request asking for us to support this.

Currently, going through the documentation, to use PCIDriverKit specifying a Vendor and Product Ids is required, so I doubt that this is a viable path.

I'm not sure how remote machines appear in the IORegistry, but DriverKit matching actually uses standard IOKit matching so, in theory, it probably is possible to match against that remote machine. However:

  • Unlike the other DriverKit families, PCIDriverKit does NOT provide a development entitlement variant, so you'd have to disable SIP and AMFI in order to start building any kind of test.

  • We obviously haven't documented anything about how our machines interact with each other in this configuration, so I have no idea whether you'd be able get the machines actually communicating with each other.

  • If you managed to get it working, I'm not confident there is any entitlement configuration that would allow this to work and that we'd also be willing to grant.

I know that Linux exposes the "XDomain" protocol to announce thunderbolt services (This is the same protocol that is used in macOS to discover Thunderbolt Networking peers). Is this functionality exposed to macOS driver developers?

No, not currently.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Thunderbolt: Implementing shared IO between hosts
 
 
Q