KVM GPU直通vbios rom问题

在采用OVMF(UEFI)启动的虚拟机,若host linux以UEFI模式启动并完成直通GPU的初始化,则会造成虚拟机启动失败并宕掉host linux。
解决办法:
1.调整主板BIOS
此项与各主板厂商BIOS设置项开放程度有关。
若有多个GPU设备,可以设置不直通的显卡为primary video card。
2.若所有GPU均需直通给虚拟机,或只有一个GPU
方法一:尝试开启CSM,并disable video rom,这会导致之后POST及HOST主机启动黑屏无显示,并有POST报警。
方法二:设置linux cmdline,禁掉内核framebuffer。

GRUB_CMDLINE_LINUX_DEFAULT="video=efifb:off nomodeset"   ///追加至末尾,uefi启动方式
GRUB_CMDLINE_LINUX_DEFAULT="video=vesafb:off nomodeset"   ///追加至末尾,传统BIOS启动方式

在设置linux cmdline,并更新grub,重启之后,启动虚拟机后屏幕黑屏,内核日志中vfio报GPU rom not found错误。
需要提取GPU vbios rom,并在libvirt xml中指定rom文件

  
      
      
        
///添加GPU rom文件

提取GPU vbios rom文件

linux系统方式
预置条件:必须开启CSM兼容模式,并以legacy方式启动系统,UEFI不可用。可下载centos等安装镜像,制作U盘启动。
提取bios文件的显卡必须作为主显示设备并接显示器。即提取intel集成显卡接主板显示输出,独显接独显输出。
若未按以上操作,则会出现设备文件夹内无rom文件,或者提取时报IO error。

cd /sys/bus/pci/devices/0000:01:00.0/       ///lspci查询GPU所在位置
echo 1 > rom
cat rom > /usr/share/kvm/vbios.bin
echo 0 > rom

windows系统方式
显卡rom是存放在注册表中的,打开注册表,搜索vbios,可找到多个路径,仔细比对,其中的二进制数据即rom,下载HxD程序https://mh-nexus.de/en/hxd/,新建文件并将该二进制数据粘贴保存即可。
参考链接:https://forums.laptopvideo2go.com/topic/32103-how-to-grab-a-notebooks-vbios-that-is-not-supported-by-nvflash/
注:techpowerup中的bios文件有其他校验数据,不可直接使用,可辅助用来对比提取出的rom文件(nvidia已验证)

提取的bios使用hxd(windows),hexdump(linux)打开后,是以55 aa开头,如下:

00000000  55 aa 80 e9 92 f9 30 30  30 30 30 30 30 30 30 30  |U.....0000000000|
00000010  30 30 c0 30 e9 c9 2f 0e  40 00 f0 0a 30 30 49 42  |00.0../[email protected]|
00000020  4d 20 56 47 41 20 43 6f  6d 70 61 74 69 62 6c 65  |M VGA Compatible|
00000030  20 42 49 4f 53 2e 20 03  ae 00 be 00 cc 00 8b c0  | BIOS. .........|
00000040  50 43 49 52 86 80 06 04  1c 00 1c 00 03 00 00 03  |PCIR............|

你可能感兴趣的:(KVM GPU直通vbios rom问题)