HP Z800にESXi5.5を入れていろいろやってみる(VMDirectPathでUSBコントローラ、VGA、HD-Audio、SASコントローラを接続)

 

Z800のUSBをパススルーするためにいろいろ調査。

前面USBの接続先
上:1-6 5-2 00:1a,2 3A39 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
中:1-5 5-1 00:1a,2 3A39 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
下:1-4 4-2 00:1a,1 3A38 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5

 

背面USBの接続先
上左:2-5 8-1 00:1d.2 3A36 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
上右:2-6 8-2 00:1d.2 3A36 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
中左:2-2 6-2 00:1d.0 3A34 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
中右:2-1 6-1 00:1d.0 3A34 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
下左:2-4 7-2 00:1d.1 3A35 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
下右:2-3 7-1 00:1d.1 3A35 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2

エラー 00:1a.7 Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
エラー 00:1d.7 Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1

不明 ?-? 00:1a,0 Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4

 

USBコントローラは、パススルー設定および仮想マシンへの接続、ゲストOS上での認識OKです(キーボードで試しました)。

おそらくだが、内部USBヘッダの3ポートが00:1a,0の2つと、00;1a,1の1つに相当していると推測。
残りは2つずつが1セットで1つのUSBコントローラに接続されている模様。
ということは、最大4つの仮想サーバに、USBをそれぞれ直結できる・・・・ハズ

USB2 EHCIについては、パススルー設定はできるのだが、仮想マシンに接続して仮想マシンを起動しようとすると、
エラーになり起動できません。
ただしここでZ800での落とし穴。
USB2 EHCIがエラーになる理由がはじめはわからなかったのだが、UHCI(USB1.1)とEHCI(USB2.0)がヒントでした。
実はZ800のUSBポートですが、接続する機器がUSB1.1かUSB2.0かによって、接続される内部ポートが変化します。
たとえば、内部接続00:1aに接続されている前面USB物理ポートですが、USB1.1機器(キーボードやマウス等)はそれぞれ対応したUSB UHCI内部コントローラに接続されます。
しかし、USB2.0機器(USB-HDDやUSBメモリ等)の場合は00:1a.7のUSB2 EHCIコントローラに接続されます。

背面USBの場合、USB1.1機器を接続した場合は内部接続00:1dに接続されている対応したUSB UHCI内部コントローラ(.0-2)に接続され、
USB2.0機器の場合は00:1d.7のUSB2 EHCIコントローラに接続されます。

このおかしな挙動のせいで、ESXにUSB2 EHCI Controller#1,#2をVMDirectPathでパススルーしても、仮想マシンが起動できないようです。

なお、USB2 EHCI Controller#1,#2をパススルー設定せずに、ESXiで認識させ、ESXiのUSBパススルー機能を利用することで、
ゲストOSにUSB2.0機器を認識させることは出来るので、最悪これで。安定度がどの程度かはやってみないとわかりません。

ちなみに、USB2.0のUSB HUB経由で接続すると、USB2 EHCI Controllerでの認識となるので、パススルーは事実上できません。

現在の私の予定ではUSB3.0のPCI-eボードを追加してパススルーさせる予定ではあるので、
使い勝手は悪くなるけど、理由まではわかったのでここまでとします。

 
その他デバイス
本体内蔵スピーカ 00:1b.0 Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
SASコントローラ 41:00.0 LSI Logic / Symbios Logic LSI1068E
Quadro4000 0f:00.0 NVIDIA Corporation GF100GL
Quadro4000-HDAudio 0f:00.1 NVIDIA Corporation GF100 High Definition Audio Controller

上記はすべてPassthrough OKでした。

本体内蔵スピーカは、本体ケース前面付近に設置されたスピーカに接続されたHD-Audioです。
本体のみで普通に音が鳴ります。

SASコントローラはオンボードのSAS/SATAの8ポートです。
接続されたHDD(SAS300GB15kを4本)も認識できていることを確認できました

Quadro4000のDirect PassthroughはVMware的に言えばvDGAってやつです。
画面上はESXi起動途中で止まってハングしたように見えるけど、内部的には動いていて、
そのうちvSphereClientやvCenter経由で接続できるようになります。
メモリ2GB以上仮想マシンに積んでいる場合は、
仮想マシンのコンフィグに以下を追加します。
pciHole.start = “1200”
pciHole.end = “2200”
後は、デバイスマネージャからドライバを自動検索でインストールすればOKです。
Quadro4000側のHDAudioも問題なし。

 

ほかには、すでにESXiで使用しているAHCI(6ポートSATA)やNIC(BCM5764M)x2もありますが、これはやろうと思えばできそうです。
1394aインターフェースもありますが、対応機器を持っていないので、確認はできません。
やはり、いろいろと奥が深い・・・