分页: 1 / 2
实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-08-03 6:36
由 dongping_xie
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
有什么问题我可以尝试一下解答。
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-08-03 12:09
由 天羽美羽
前排大力支持

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-08-03 13:34
由 zhw2101024
标记一下,等以后稳定了就可以抛弃virtualbox了

Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-08-03 19:13
由 dongping_xie
zhw2101024 写了:标记一下,等以后稳定了就可以抛弃virtualbox了

其实过了一年,已经很稳定了。就是例如nvidia的patch还没有进入upstream,以及虚拟机reset显卡会有问题。我反正是买了ssd和键盘鼠标来玩这个了。
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-08-04 11:33
由 jobinson99
这个好,记下了。
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 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,俺家显卡不在里面...
PS 支持列表里面满满的A卡有木有,用A卡的孩纸你们是幸福的...
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-06 18:06
由 dongping_xie
楼主有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>
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-06 20:09
由 嘧涅咓^_^
dongping_xie 写了:
楼主有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没打,俺现在再试试看吧
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-07 20:13
由 dongping_xie
嘧涅咓^_^ 写了:
sudo有的,不过patch没打,俺现在再试试看吧
还有就是i家的芯片组好像在grub启动那里要加上什么 unsafe_interrupt 之类的,我是a家的,所以没有试过。
然后还有一点就是显卡不只有一个设备的(显卡是一个设备,显卡上的声卡又是一个),同一组的两个设备必定都要Bind到pcistub上的,然后再同时bind到vfio上。
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-07 20:22
由 自由建客
独占显卡吗?要是双显卡的机器是不是可只分配一块呢?
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-08 16:38
由 langyxxl
等再成熟点就能了。。
我现在APU+A卡独显,貌似没法进行
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-10 13:45
由 嘧涅咓^_^
嘧涅咓^_^ 写了:dongping_xie 写了:
楼主有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也加了,还是不行
网上转了一圈,貌似还是俺显卡不支持...
PS 俺配置:i7-4700MQ+GT750M
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-09-10 19:05
由 langyxxl
笔记本不行,听别人说在同一个桥上,没法给虚拟机的吧
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-10-06 20:55
由 lanni654321
这个不错
嘿嘿 支持……
Re: 实测,用qemu-kvm直接控制显卡获得接近原生的3D性能,终于可以玩游戏了
发表于 : 2014-11-30 19:07
由 jinhongchao@gmail.com
两个显卡就没有意思了