CentOS7 KVMでNVIDIAのGPUをWindowsにパススルーする

WindowsNVIDIAドライバはOSがKVMハイパーバイザー環境で動作していることを検知すると error 43 で動作停止するという仕様のため、回避するために以下の対策が必要。
1. libvirtドメイン設定でハイパーバイザーのベンダーIDを偽装する
2. libvirtドメイン設定で hidden state を on にする

詳細は下記
 https://wiki.archlinuxjp.org/index.php/OVMF_による_PCI_パススルー
 9.1	Windows仮想マシンNVIDIAGPU をパススルーした場合に "Error 43 : Driver failed to load"

上記対策はUEFIモードでインストールしたWindowsのみで有効。
BIOSモードでインストールしたWindowsではエラーが出る)

UEFIモードでインストールできるようにするために、OVMF(Open Virtual Machine Firmware)のインストール・設定を行う。

・OVMFのインストール

# vi /etc/yum.repos.d/kraxel.repo
include=https://www.kraxel.org/repos/firmware.repo

# yum install edk2.git-ovmf-x64

virt-installの設定

vert-install で --boot uefi オプションを指定できるようにするために、下記設定を追加する
# /usr/local/etc/libvirt/qemu.conf 
nvram = [
    "/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd",
    "/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"
]

virt-installUEFI を指定してインストール

# virt-install \
   --boot uefi \
  <省略>

※virt-manager でインストールする場合はファームウェアの指定でUEFIを選択する
※OVMFは virtioで接続したディスクからOS起動できないため、IDE もしくは virtio-scsi での接続が必要