2013年12月8日日曜日

Enabling Thunderbolt PCIe tunnelling for device drivers on OS X

Recent Mac computers have Thunderbolt interfaces. Thunderbolt allows connecting with devices by tunnel PCI Express protocols. Thunderbolt interface is physically backward-compatible with DisplayPort interface. Therefore you can connect both of DisplayPort devices and Thunderbolt devices.

I have a thunderbolt chassis, EchoExpress SE from sonnet. This box can contain a two-slot height PCI Express card inside, and allows connecting to recent MacBook series using Thunderbolt interface.
 

However, you man not able to load its device driver correctly. One of the known reason is that the driver is not configured to allow Thunderbolt tunneling mode. You can find out if you hit this issue.

To enable Thunderbolt tunneling, you can enable "IOPCITunnelCompatible." As an example, iomemory-vsl.kext is the implementation of Fusion-io ioMemory VSL. Its package has Contents/Info.plist file, and you can enable "IOPCITunnelCompatible" by editing this. This hack also should work with other PCIe device drivers.

  157  cd /System/Library/Extensions/iomemory-vsl.kext/Contents/
  159  vi Info.plist

~~~~
66                 <key>iomemory-vsl</key>
67                 <dict>
68                         <key>CFBundleIdentifier</key>
69                         <string>com.fusionio.driver.iomemory-vsl</string>
70                         <key>IOClass</key>
71                         <string>com_fusionio_driver_iomemory_vsl</string>
72                         <key>IOKitDebug</key>
73                         <integer>65535</integer>
74                         <key>IOPCIMatch</key>
75                         <string>0x10001aed&amp;0x0000ffff</string>
76                         <key>IOProviderClass</key>
77                         <string>IOPCIDevice</string>
78                         <key>auto_attach</key>
79                         <string>1</string>
80                         <key>parallel_attach</key>
81                         <string>0</string>
+82                         <key>IOPCITunnelCompatible</key>
+83                         <true/>
84                 </dict>
85         </dict>
~~~~


When you are done, try reloading the driver by running kextunload & kextload, and I'll find the device probed.

I spotted Fusion-io driver this time, but current Fusion-io driver supports Thunberbolt tunning by default, so actually you don't need to do this today. I had tested ioDrive2 and ioFX through the chassis earlier days.

0 件のコメント:

コメントを投稿