PCI パススルーデバイスとして仮想マシンに GPU を追加/有効化後、 『モジュール「DevicePowerOn」のパワーオンに失敗しました。』のエラーで仮想マシンの起動に失敗する
search cancel

PCI パススルーデバイスとして仮想マシンに GPU を追加/有効化後、 『モジュール「DevicePowerOn」のパワーオンに失敗しました。』のエラーで仮想マシンの起動に失敗する

book

Article ID: 458990

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免責事項:これは英文の記事「Module 'DevicePowerOn' power on failed to start the virtual machine after adding/enabling GPU as PCIpassthru device」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

 

vSphere 仮想マシンに PCI パススルーを使用して GPU を追加する場合、いくつか追加の設定を行う必要があります。
これを行わない場合、仮想マシンは起動しません。

  • 仮想マシンの [アクション]>[設定の編集] > [仮想マシン オプション] > [起動オプション] > [ファームウェア] 設定を確認して 「EFI」 を選択します。
    これを行わないと GPU が機能せず、VM は起動しません。
  • ホストの BIOS 設定を検証します。
  • 仮想マシンへの VMDirectPath I/O ダイレクト PCI デバイス接続構成を確認および検証します: Configuring VMDirectPath I/O pass-through devices on a VMware ESX or VMware ESXi host

  • エラーメッセージ:

状態
失敗 - モジュール「DevicePowerOn」のパワーオンに失敗しました。

エラー
モジュール「DevicePowerOn」のパワーオンに失敗しました。
仮想マシンの起動に失敗しました。

  • vmware.log に以下のログが出力されます:

    YYYY-MM-DDTHH:MM:SS In(05) vmx - PCIPassthru: Device ####:##:##.# barIndex 0 type 2 realaddr #x###### size ###### flags 0
    YYYY-MM-DDTHH:MM:SS In(05) vmx - PCIPassthru: Device ####:##:##.# barIndex 1 type 3 realaddr #x###### size ###### flags 12
    YYYY-MM-DDTHH:MM:SS In(05) vmx - PCIPassthru: Device ####:##:##.# barIndex 3 type 3 realaddr #x###### size ###### flags 12
    YYYY-MM-DDTHH:MM:SS In(05) vmx - PCIPassthru: Device has PCI Express Cap Version 2(size 60)
    YYYY-MM-DDTHH:MM:SS In(05) vmx - PCIPassthru: Registered a PCI device for ####:##:##.# vIRQ 0x11, physical MSI = Enabled (vmmInt = Enabled),
    IntrPin = 1
    YYYY-MM-DDTHH:MM:SS In(05) vmx - PCIPassthru: total number of pages needed (######) exceeds limit (######), failing
    YYYY-MM-DDTHH:MM:SS In(05) vmx - Module 'DevicePowerOn' power on failed
    YYYY-MM-DDTHH:MM:SS In(05) vmx - VMX_PowerOn: ModuleTable_PowerOn = 0
    YYYY-MM-DDTHH:MM:SS In(05) svga - SVGA thread is exiting the main loop
    YYYY-MM-DDTHH:MM:SS In(05) vmx - Destroying virtual dev for scsi0:0 vscsi=#######

Environment

  • VMware vSphere ESXi 7.0
  • VMware vSphere ESXi 8.0

Cause

この事象は通常、仮想マシンに割り当てられている全 GPU 分に対して十分な Memory Mapped I/O (MMIO) 空間が割り当てられていない場合に発生します。

Resolution

  1. この問題を解決するには、仮想マシンに対して MMIO パラメータを設定/構成する必要があります。
  2. 仮想マシンを右クリックし、[設定の編集] > 仮想マシン オプション] > [詳細] > [設定の編集] に移動します。
  3. 詳細パラメータ画面で、以下の 2 つのパラメータを追加します:

    pciPassthru.use64bitMMIO = TRUE
    pciPassthru.64bitMMIOSizeGB = "MMIO_Space_In_GB"

    例: 
    pciPassthru.use64bitMMIO = TRUE
    pciPassthru.64bitMMIOSizeGB = 128



  4. [OK]をクリックします。
  5. vmx を KB Reloading a vmx file without removing the virtual machine from inventory の手順を使用してリロードします。

pciPassthru.64bitMMIOSizeGB パラメータに設定する "MMIO_Space_In_GB" の値は、以下の手順で決定します:

  • CPU が GPU にデータを渡すために、システムメモリを GPU のフレームバッファメモリにマッピングする MMIO を設定します。
  • 64bitMMIOSizeGB の値は、仮想マシンに接続されているすべての GPU フレームバッファメモリの合計を計算して求めます。
    GPU のフレームバッファメモリ合計が 2 の累乗と正確に一致する場合、pciPassthru.64bitMMIOSizeGB を 「次の 2 の累乗の値」 に設定します。
  • 合計メモリサイズが 2 つの「2 の累乗」の間にある場合は、「次の 2 の累乗」に切り上げ、さらに「その次の 2 の累乗」に切り上げることで、適切な設定値が得られます。

2 の累乗: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

  • 例: 80GB のメモリを持つ NVIDIA A100 カードが 1 枚ある場合、80 は 64 と 128 の間値であることから「次の 2 の累乗」である 128 に切り上げ、さらに「その次の 2 の累乗」である 256 に切り上げることで、正しい設定値 である 256 が得られます。

その他の構成例:

  • 2 x 16GB NVIDIA V100 = 32GB であり、32 は 2 の累乗と一致するため、次の 2 の累乗である 64 に切り上げ、pciPassthru.64bitMMIOSizeGB = 64 と設定します。
  • 2 x 24GB NVIDIA P40 = 48GB であり、これは 32 と 64 の間にある値のため、64 に切り上げ、さらに 128 に切り上げ、 pciPassthru.64bitMMIOSizeGB = 128 と設定します。
  • 8 x 16GB NVIDIA V100 = 128GB であり、128 は 2 の累乗と一致するため、次の 2 の累乗である 256 に切り上げ、pciPassthru.64bitMMIOSizeGB = 256 と設定します。
  • 10 x 16GB NVIDIA V100 = 160GB であり、これは 128 と 256 の間にあるため、256 に切り上げ、さらに 512 に切り上げ、pciPassthru.64bitMMIOSizeGB = 512 と設定します。

注: Nvidia H20 GPU の場合、想定される MMIO サイズを機能させるために追加の VM 構成が必要です。詳細は vGPU Power-on Failure with libnvidia-vgx.so on NVIDIA H20 GPUs を参照してください。

Additional Information

Msg_post: Error

[msg.efi.pciMmioError] The Firmware could not allocate ###### KB of PCI MMIO Increase the size of PCI MMIO and try again