こちらのページを参考にGPUパススルーの設定を行ったが、エラーが発生したため備忘録として残しておく。
https://www.server-world.info/query?os=CentOS_8&p=kvm&f=12
1. 環境
ホスト:CentOS8
- libvirt:4.5.0
ゲスト:CentOS8 ※すでに構築済みのものを使用
2. 発生した問題(1)
2-1. 解決方法
いろいろ調べていたところ vfio_iommu_type1 というモジュールが読み込まれていないことが分かり、これを読み込ませることで起動できるようになる。
・一時的には
# modprobe vfio_iommu_type1
・永続的には(ホストの再起動が必要)
# echo 'vfio_iommu_type1' > /etc/modules-load.d/vfio_iommu_type1.conf
3. 次に発生した問題(2)
問題(1)を解決後、Nvidia driverのインストールを行い、nvidia-smiを実行したところ以下のエラーが発生した。
$ nvidia-smi
Unable to determine the device handle for GPU 0000:07:00.0: Unknown Error
dmesgを実行するとこのようなログが複数残っていた。
$ dmesg ・・・ [ 26.907855] NVRM: GPU 0000:07:00.0: RmInitAdapter failed! (0x23:0x56:498) [ 26.908054] NVRM: GPU 0000:07:00.0: rm_init_adapter failed, device minor number 0 ・・・
3-1. 解決方法
Nvidia driverはハイパーバイザの動作を確認し動作を停止させるらしい。これを回避するためには、VM設定XMLのfeaturesタグ内に以下のhypervとkvmタグを追加する。
# virsh edit [vmname] ・・・ <features> ・・・ <hyperv> <vendor_id state='on' value='whatever'/> </hyperv> <kvm> <hidden state='on'/> </kvm> ・・・ </features> ・・・
3-1-1. 参考サイト
Windows の仮想マシンに NVIDIA の GPU をパススルーした場合に “Error 43 : Driver failed to load”
Ubuntu19.10 KVMでGPUのパススルーができない問題の解決策
※私の環境ではこの設定は不要だった