实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

Kvm、VMware、Virtualbox、Xen、Qemu 等
dongping_xie
帖子: 5
注册时间: 2014-08-03 5:44

实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#1

帖子 dongping_xie » 2014-08-03 6:36

kvm在内核提供了vfio-vga功能后,也可以让虚拟机可以直接控制显卡了。那样虚拟机就会有(接近)原生的3d性能,也就是说可以玩任何的3d游戏。

其实这个功能xen早就提供了(pci-back模块好像是),只不过xen的dom0主机上不能装vmware的module,因为dom0就是在hypervisor上的,主机的内核并不是真正直接和硬件通信的。

前提:
* 两个显卡
* 两套键盘鼠标
* 支持iommu的主板和cpu
* 有一个非btrfs的分区

大概流程
* 更新kernel和驱动,有些驱动需要打补丁
* 启动时将需要passthrough的显卡绑定到pci-stub,以避免显卡驱动绑定显卡。
* 然后吧显卡绑定到vfio的驱动,就可以启动kvm了。

暂时坑还是很多,例如虚拟机不能重启,只能关机。虚拟机关机后,主机要sleep一次来reset显卡,否则重启虚拟就就会让主机的内核死掉。

详细教程在这里:
https://bbs.archlinux.org/viewtopic.php?id=162768

有什么问题我可以尝试一下解答。
天羽美羽
帖子: 183
注册时间: 2013-05-22 22:29
系统: Ubuntu14.04

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#2

帖子 天羽美羽 » 2014-08-03 12:09

前排大力支持 :em11
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
联系:

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#3

帖子 zhw2101024 » 2014-08-03 13:34

标记一下,等以后稳定了就可以抛弃virtualbox了 :em11
dongping_xie
帖子: 5
注册时间: 2014-08-03 5:44

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#4

帖子 dongping_xie » 2014-08-03 19:13

zhw2101024 写了:标记一下,等以后稳定了就可以抛弃virtualbox了 :em11
其实过了一年,已经很稳定了。就是例如nvidia的patch还没有进入upstream,以及虚拟机reset显卡会有问题。我反正是买了ssd和键盘鼠标来玩这个了。
头像
jobinson99
帖子: 1169
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
联系:

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#5

帖子 jobinson99 » 2014-08-04 11:33

这个好,记下了。
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
NixOS + lxqt + 无人生产线 + 无人农场 (已发明全套山地农业机械 + 线性喷洒系统,成片农业采收系统)+ 随身设备,柔性电路,冷热双调衣……
头像
嘧涅咓^_^
帖子: 22
注册时间: 2014-01-10 13:53
系统: 啊嚏Linux~
来自: 帝都

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#6

帖子 嘧涅咓^_^ » 2014-09-06 13:25

MS这个对显卡是有要求的...

前几天照那个帖子的方法试了,启动qemu时老是报 no iommu_group for device ~~~>_<~~~

明明intel_iommu=on, lsmod看vfio也一切正常,pcistub也表示绑定显卡了...

然后维基了一下...http://en.wikipedia.org/wiki/List_of_IO ... g_hardware,俺家显卡不在里面... :em20

PS 支持列表里面满满的A卡有木有,用A卡的孩纸你们是幸福的...
谦虚恭谨,不要装X

---论如何优雅地服用Linux
dongping_xie
帖子: 5
注册时间: 2014-08-03 5:44

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#7

帖子 dongping_xie » 2014-09-06 18:06

嘧涅咓^_^ 写了:MS这个对显卡是有要求的...

前几天照那个帖子的方法试了,启动qemu时老是报 no iommu_group for device ~~~>_<~~~

明明intel_iommu=on, lsmod看vfio也一切正常,pcistub也表示绑定显卡了...

然后维基了一下...http://en.wikipedia.org/wiki/List_of_IO ... g_hardware,俺家显卡不在里面... :em20

PS 支持列表里面满满的A卡有木有,用A卡的孩纸你们是幸福的...
楼主有sudo么?我之前也有这个错误了,忘记是什么了,有可能是vfio-bind那步出错了。可以试试手动来看sysfs里面的显卡是否bind到了vfio驱动那里。


而且如果另一张卡是n卡,驱动要打个补丁的。 编译后33mb 放不上来。。

我的显卡也不在列表上。没有写上去而已。

代码: 全选

diff -Naur NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv.c NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv.c
--- kernel/nv.c	2014-01-09 03:49:24.000000000 +0100
+++ kernel/nv.c	2014-07-28 21:47:48.025541267 +0200
@@ -2993,12 +2993,12 @@
 
     pci_set_master(dev);
 
-#if defined(CONFIG_VGA_ARB)
-#if defined(VGA_DEFAULT_DEVICE)
-    vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
-#endif
-    vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
-#endif
+//#if defined(CONFIG_VGA_ARB)
+//#if defined(VGA_DEFAULT_DEVICE)
+//    vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
+//#endif
+//    vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
+//#endif
 
     if (NV_IS_GVI_DEVICE(nv))
     {
diff -Naur NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv-linux.h NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv-linux.h
--- kernel/nv-linux.h	2014-01-09 03:49:25.000000000 +0100
+++ kernel/nv-linux.h	2014-07-28 21:47:30.521541666 +0200
@@ -127,9 +127,9 @@
 #error "struct file_operations compile test likely failed!"
 #endif
 
-#if defined(CONFIG_VGA_ARB)
-#include <linux/vgaarb.h>
-#endif
+//#if defined(CONFIG_VGA_ARB)
+//#include <linux/vgaarb.h>
+//#endif
 
 #if defined(NV_VM_INSERT_PAGE_PRESENT)
 #include <linux/pagemap.h>
头像
嘧涅咓^_^
帖子: 22
注册时间: 2014-01-10 13:53
系统: 啊嚏Linux~
来自: 帝都

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#8

帖子 嘧涅咓^_^ » 2014-09-06 20:09

dongping_xie 写了:
嘧涅咓^_^ 写了:MS这个对显卡是有要求的...

前几天照那个帖子的方法试了,启动qemu时老是报 no iommu_group for device ~~~>_<~~~

明明intel_iommu=on, lsmod看vfio也一切正常,pcistub也表示绑定显卡了...

然后维基了一下...http://en.wikipedia.org/wiki/List_of_IO ... g_hardware,俺家显卡不在里面... :em20

PS 支持列表里面满满的A卡有木有,用A卡的孩纸你们是幸福的...
楼主有sudo么?我之前也有这个错误了,忘记是什么了,有可能是vfio-bind那步出错了。可以试试手动来看sysfs里面的显卡是否bind到了vfio驱动那里。


而且如果另一张卡是n卡,驱动要打个补丁的。 编译后33mb 放不上来。。

我的显卡也不在列表上。没有写上去而已。

代码: 全选

diff -Naur NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv.c NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv.c
--- kernel/nv.c	2014-01-09 03:49:24.000000000 +0100
+++ kernel/nv.c	2014-07-28 21:47:48.025541267 +0200
@@ -2993,12 +2993,12 @@
 
     pci_set_master(dev);
 
-#if defined(CONFIG_VGA_ARB)
-#if defined(VGA_DEFAULT_DEVICE)
-    vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
-#endif
-    vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
-#endif
+//#if defined(CONFIG_VGA_ARB)
+//#if defined(VGA_DEFAULT_DEVICE)
+//    vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
+//#endif
+//    vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
+//#endif
 
     if (NV_IS_GVI_DEVICE(nv))
     {
diff -Naur NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv-linux.h NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv-linux.h
--- kernel/nv-linux.h	2014-01-09 03:49:25.000000000 +0100
+++ kernel/nv-linux.h	2014-07-28 21:47:30.521541666 +0200
@@ -127,9 +127,9 @@
 #error "struct file_operations compile test likely failed!"
 #endif
 
-#if defined(CONFIG_VGA_ARB)
-#include <linux/vgaarb.h>
-#endif
+//#if defined(CONFIG_VGA_ARB)
+//#include <linux/vgaarb.h>
+//#endif
 
 #if defined(NV_VM_INSERT_PAGE_PRESENT)
 #include <linux/pagemap.h>
sudo有的,不过patch没打,俺现在再试试看吧
谦虚恭谨,不要装X

---论如何优雅地服用Linux
dongping_xie
帖子: 5
注册时间: 2014-08-03 5:44

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#9

帖子 dongping_xie » 2014-09-07 20:13

嘧涅咓^_^ 写了:
sudo有的,不过patch没打,俺现在再试试看吧
还有就是i家的芯片组好像在grub启动那里要加上什么 unsafe_interrupt 之类的,我是a家的,所以没有试过。

然后还有一点就是显卡不只有一个设备的(显卡是一个设备,显卡上的声卡又是一个),同一组的两个设备必定都要Bind到pcistub上的,然后再同时bind到vfio上。
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#10

帖子 自由建客 » 2014-09-07 20:22

独占显卡吗?要是双显卡的机器是不是可只分配一块呢?
头像
langyxxl
帖子: 443
注册时间: 2012-01-17 22:17

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#11

帖子 langyxxl » 2014-09-08 16:38

等再成熟点就能了。。
我现在APU+A卡独显,貌似没法进行
头像
嘧涅咓^_^
帖子: 22
注册时间: 2014-01-10 13:53
系统: 啊嚏Linux~
来自: 帝都

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#12

帖子 嘧涅咓^_^ » 2014-09-10 13:45

嘧涅咓^_^ 写了:
dongping_xie 写了:
嘧涅咓^_^ 写了:MS这个对显卡是有要求的...

前几天照那个帖子的方法试了,启动qemu时老是报 no iommu_group for device ~~~>_<~~~

明明intel_iommu=on, lsmod看vfio也一切正常,pcistub也表示绑定显卡了...

然后维基了一下...http://en.wikipedia.org/wiki/List_of_IO ... g_hardware,俺家显卡不在里面... :em20

PS 支持列表里面满满的A卡有木有,用A卡的孩纸你们是幸福的...
楼主有sudo么?我之前也有这个错误了,忘记是什么了,有可能是vfio-bind那步出错了。可以试试手动来看sysfs里面的显卡是否bind到了vfio驱动那里。


而且如果另一张卡是n卡,驱动要打个补丁的。 编译后33mb 放不上来。。

我的显卡也不在列表上。没有写上去而已。

代码: 全选

diff -Naur NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv.c NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv.c
--- kernel/nv.c	2014-01-09 03:49:24.000000000 +0100
+++ kernel/nv.c	2014-07-28 21:47:48.025541267 +0200
@@ -2993,12 +2993,12 @@
 
     pci_set_master(dev);
 
-#if defined(CONFIG_VGA_ARB)
-#if defined(VGA_DEFAULT_DEVICE)
-    vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
-#endif
-    vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
-#endif
+//#if defined(CONFIG_VGA_ARB)
+//#if defined(VGA_DEFAULT_DEVICE)
+//    vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
+//#endif
+//    vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
+//#endif
 
     if (NV_IS_GVI_DEVICE(nv))
     {
diff -Naur NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv-linux.h NVIDIA-Linux-x86_64-331.38-no-compat32/kernel/nv-linux.h
--- kernel/nv-linux.h	2014-01-09 03:49:25.000000000 +0100
+++ kernel/nv-linux.h	2014-07-28 21:47:30.521541666 +0200
@@ -127,9 +127,9 @@
 #error "struct file_operations compile test likely failed!"
 #endif
 
-#if defined(CONFIG_VGA_ARB)
-#include <linux/vgaarb.h>
-#endif
+//#if defined(CONFIG_VGA_ARB)
+//#include <linux/vgaarb.h>
+//#endif
 
 #if defined(NV_VM_INSERT_PAGE_PRESENT)
 #include <linux/pagemap.h>
sudo有的,不过patch没打,俺现在再试试看吧

N卡patch打了,unsafe_interrupt也加了,还是不行 :em20

网上转了一圈,貌似还是俺显卡不支持...

PS 俺配置:i7-4700MQ+GT750M
谦虚恭谨,不要装X

---论如何优雅地服用Linux
头像
langyxxl
帖子: 443
注册时间: 2012-01-17 22:17

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#13

帖子 langyxxl » 2014-09-10 19:05

笔记本不行,听别人说在同一个桥上,没法给虚拟机的吧
头像
lanni654321
帖子: 17
注册时间: 2010-10-26 21:21
系统: ubuntu
联系:

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了

#14

帖子 lanni654321 » 2014-10-06 20:55

这个不错
嘿嘿 支持……
回复