UPDATE: 2018-04,现在KVMGT相关upstream基本已全部进入master,可以参考GVTg_Setup_Guide或者GVTd_Setup_Guide,如果需要本地显示参考DMA_BUF User Guide。
UPDATE: 2017-08-08,Intel有了X系列处理器i9,这个核数肯定适合跑桌面了。
UPDATE:鉴于KVMGT的产品化集成难度较之前有所降低,所以最近有很多人都打算搞搞集成,那我先来集成一把吧。
果不其然,直接并进内核了(书要改吗。。当然不,本文简单增补即可。。)
4.10非常具有的代表性即是添加了Mediated Device(vfio-mdev),Intel有自家方案,nVidia也要支持,但Linux社区说你俩给个统一框架吧,要不太乱,于是就有了它。如此以来,N家的显卡便可以很快开发出对应的驱动(不要相信他们家销售说的话,14年偶尔问了一下说要支持的,都过去80年啦),可以看看N家去年(2016.9)放的PPT,02×03-Neo_Jia_and_Kirti_Wankhede-vGPU_on_KVM-A_VFIO_based_Framework。
相较于之前的文章intel-igvt-g-vgpu-in-kvm-kvmgt-howto,这次的并入减少了我们的不少工作。
4.10 ChangeLog:https://kernelnewbies.org/Linux_4.10
参考https://github.com/01org/gvt-linux/wiki/GVTg_Setup_Guide
另外,RHEL 7.4也已加入了KVMGT/XenGT,可以试用一下。
来看看支持哪些CPU吧:
As a long-standing member of the open source community, Intel works upstream to ensure that full, open source implementations of Intel® GVT exist for open source virtualization hypervisors, KVM* and Xen*, known respectively as KVMGT and XenGT. KVMGT and XenGT deliver excellent virtual GPU performance in VMs across 5th and 6th generation Intel® Core™ processors (Intel® Core™ i3, Intel® Core™ i5, and Intel® Core™ i7 processors) with Intel Processor Graphics as well as Intel® Xeon® processors E3 v4 family with Intel Processor Graphics.
首先安装并编译4.10的内核:
$ git clone https://github.com/01org/gvt-linux $ sudo yum install openssl-devel ncurses-devel $ cd gvt-linux $ git checkout gvt-stable-4.10 $ echo ""|make oldconfig $ make menuconfig
搜索关键字kvmgt, mdev,vfio-iommu-type1,并将其标记为“M”。 模块标记完成后,进行编译安装。
$ make -j4 $ sudo make modules_install $ sudo make install $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
从elrepo安装的缺少模块和编译环境。
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
然后修改grub文件:
menuentry 'CentOS Linux (4.10.10) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.10.2.el7.x86_64-advanced-6a3987e2-9cb7-4b38-9a53-1642aefada46' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 3fc34ea6-30d7-491e-931d-d0941884fb6b else search --no-floppy --fs-uuid --set=root 3fc34ea6-30d7-491e-931d-d0941884fb6b fi linux16 /vmlinuz-4.10.10 root=/dev/mapper/cl-root ro rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet LANG=en_US.UTF-8 i915.enable_gvt=1 kvm.ignore_msrs=1 initrd16 /initramfs-4.10.10.img }
为什么添加ignore_msrs呢?
Since some windows guest 3rd patry application / tools (like GPU-Z / Passmark9.0) will trigger MSR read / write directly, if it access the unhandled msr register, guest will trigger BSOD soon. So we added the “kvm.ignore_msrs=1” into grub for workaround.
然后继续编译QEMU,这次只要下载upstream的即可。
$ git clone git://git.qemu.org/qemu.git $ cd qemu $ git checkout v2.8.1 $ git submodule update --init roms/seabios $ ./configure --prefix=/usr \ --enable-kvm \ --disable-xen \ --enable-debug-info \ --enable-debug \ --enable-sdl \ --enable-vhost-net \ --enable-spice \ --disable-debug-tcg \ --target-list=x86_64-softmmu $ make -j4 $ cd roms/seabios $ make -j8 $ cd - $ sudo make install $ sudo cp roms/seabios/out/bios.bin /usr/bin/bios.bin
你好!我也在ubuntu17.04下也尝试KVMGT,采用的gvt-linux-gvt-stable-4.10,Igvtg-qemu-stable-2.9.0;一直无法成功,用的是Intel i7处理器;一直无法在VM中看到Host的GPU设备;我是按照GVTg_Setup_Guide的流程做的,在编译内核之前,把gvt-linux-gvt-stable-4.10目录下的.config文件中的关于I915和mdev以及VFIO相关的选项都置为Y;编译并且安装内核后,一致无法在/sys/bus/pci/0000:00:02:0/的目录下生产mdev_support_xx的路径,请问哪里是否还有问题?
你好!编译并且安装内核后,一致无法在/sys/bus/pci/0000:00:02:0/的目录下生产mdev_support_xx的路径;VM中看不到Host的GPU设备。
mdev_support_xx 这个路径不再 /sys/bus/pci下
而是在 /sys/class/mdev_bus/0000:00:02.0
你好整个流程你跑通了吗?
正文已更新链接
你好,我在16.04上面做的,这个两个路径下面都没有mdev_support_xx这个文件夹,求帮助,谢谢!
你是不是没有通过kenrel启动参数将gvt-g使能,检查启动参数中是否添加了i915.enagle_gvt=1
你好,我在16.04上面做的,在/sys/bus/pci/0000:00:02:0/的目录下没有产生mdev_support_xx这个文件夹,启动参数中添加了 i915.enagle_gvt=1,请帮组!谢谢
你好,你的问题解决了吗?遇到了和你同样的问题了,不知道原因出在何处了。
你好,你解决了吗?
我还没解决啊,还在继续查
你要是解决了也在这里留一下解决的方法吧!我也一样!
你好你遇见的问题解决了吗?望回复
你是不是没有通过kenrel启动参数将gvt-g使能,检查启动参数中是否添加了i915.enagle_gvt=1
你好我按照这篇文档没有跑通,你能否把你跑通的流程发我一下呐,谢谢,如果成功的话,给你发个大红包!
https://github.com/intel/gvt-linux/wiki/GVTg_Setup_Guide
你好我按照你给我发文档走到创建vgpu的时候,这个路径下面/sys/bus/pci/devices/0000:00:02.0没有mdev_supported_types这个文件夹,求帮助,谢谢
换最新内核,或者最新操作系统ubuntu18或者fedora-rawhide
我用已经是最新的gvt_linux的内核了,用的是gvt-stable-4.14新的内核了,系统是ubuntu16.0.4和操作系统有关系吗?
不要纠结了,换18.04,不行的话就是主板或者CPU的问题
我主机得cpu: Intel(R) Celeron(R) CPU 3865U @ 1.80GHz
你好,我主机得vga: 00:02.0 VGA compatible controller: Intel Corporation Device 5906 (rev 02)
编译内核得时候有警告:Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_01.bin for module i915 说找不到固件,是不是和我得硬件有关系,硬件配置太低了? 系统是 16.04 gvt-stable-4.14 igvtg-qemu2.10.0,请回复,谢谢
哥们,你这个是典型硬件不支持,至少i5 i7 i9啥的吧
兄弟加我一下qq吧:851738497,谢谢
兄弟加我一下qq吧:851728497,谢谢(刚才那个qq号写错了,尴尬),加我一下哈,谢谢!。
你好,你的问题解决了吗?遇到了和你同样的问题了,不知道原因出在何处了。
好的我用18.04试一下,谢谢你的解答,谢谢呦
我这个测试成功了 但是使用spicy连接的效果 不好 鼠标会飘动, 请问楼主是用的什么远程协议去连接的呢
citrix hdx
virsh define vm0.xml 遇到如下问题
error: Failed to define domain from vm0.xml
error: unsupported configuration: unknown host device source address type ‘mdev’
附xml片段
gvt-g环境下,spice协议传输画面的源码处理流程和架构啥样的啊,知道吗,可以私聊
qq 1431585676