2013年12月8日日曜日

Thunderbolt シャーシ経由で PCI Express カードが利用できない時は...

最近の Mac や一部のマシンには Thunderbolt のコネクタがついています。 Thunderbolt とは DisplayPort のインターフェイス上で PCIe をトンネルする仕組みで、従来の DisplayPort 同様にモニタの表示に使えるほか汎用的にデバイスを接続できる仕組みになっています。

私が持っているのは EchoExpress SE という比較的安価な Thunderbolt-PCIe シャーシで、2スロットまでの PCIe カードを収容して、 MacBook シリーズへ Thunderbolt 経由で接続できます。
 

ただ、 MacOS X で一部のハードウェアとドライバを組み合わせた時にきちんとデバイスがロードされないケースがあり、そのひとつの原因が、そのドライバが Thunderbolt のトンネリング経由でデバイスに接続するのを許していないケースがあります。

Thunderbolt のトンネリングは IOPCITunnelCompatible というフラグ(・・・?)を立ててあげる必要があります。具体例として Fusion-io ioMemory VSL の MacOS X 用ドライバは iomemory-vsl.kext というカーネルエクステンションとして実装されていますが、その中の
Contents/Info.plist を書き換えてあげます。

  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>
~~~~


Info.plist を編集したら kextunload, kextload にてカーネルエクステンションをリロードしてあげると Thunderbolt でトンネリングされたデバイスを利用できるようになります。

なお、例として Fusion-io のドライバを挙げましたが、今時の Fusion-io ioMemory VSL では上記フラグは立っているので、現在のドライバでは上記設定を行う必要はありません。むかしむかし MacOS X ドライバがまだ正式でなかった頃は Thunderbolt 経由での接続が許可されていなかったので、 Thunderbolt 経由で使いたい場合には上記の設定でアンロックして認識させていました。

0 件のコメント:

コメントを投稿