Changes between Initial Version and Version 1 of TipAndDoc/VM/KVM/virtio


Ignore:
Timestamp:
Oct 9, 2016 12:32:00 AM (8 years ago)
Author:
mitty
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TipAndDoc/VM/KVM/virtio

    v1 v1  
     1[[PageOutline]] 
     2 
     3 = virtio-gpu = 
     4 * [https://virgil3d.github.io/ Virgil 3D GPU project by virgil3d] 
     5 
     6 * [https://www.phoronix.com/scan.php?page=news_item&px=Virt-Manager-1.4-Released Virt-Manager 1.4 Exposes The New OpenGL Options - Phoronix] 
     7 * [https://www.kraxel.org/blog/2016/09/using-virtio-gpu-with-libvirt-and-spice/ Using virtio-gpu with libvirt and spice | kraxel's news] 
     8 
     9 == QXL vs virtio-vga == 
     10 * 結論から言うと、SPICEが未対応のためvirt-manager下では3D accelerationを有効にできない 
     11  * https://wiki.archlinux.org/index.php/QEMU#virtio {{{virtio-vga}}} / {{{virtio-gpu}}} is a paravirtual 3D graphics driver based on [https://virgil3d.github.io/ virgl]. 
     12  > As of September 2016, support for the spice protocol is under development and can be tested installing the development release of spice (>= 0.13.2). 
     13 
     14 * H/W: wiki:TipAndDoc/Hardware#ASUSH97M-PLUS 
     15 * S/W 
     16  * ArchLinux 4.7.6-1 
     17  * qemu 2.7.0-2 
     18  * seabios 1.9.3-1 
     19  * libvirt 2.3.0-1 
     20  * spice 0.12.8-1 
     21  * virt-manager 1.4.0-2 
     22 
     23 === QXL === 
     24 * mitty@guest:~$ lspci 
     25{{{ 
     2600:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) 
     27}}} 
     28 * mitty@guest:~$ dmesg | grep drm 
     29{{{ 
     30[    1.057734] [drm] Initialized drm 1.1.0 20060810 
     31[    1.110306] [drm] Device Version 0.0 
     32[    1.110308] [drm] Compression level 0 log level 0 
     33[    1.110309] [drm] Currently using mode #0, list at 0x488 
     34[    1.110309] [drm] 12286 io pages at offset 0x1000000 
     35[    1.110310] [drm] 16777216 byte draw area at offset 0x0 
     36[    1.110310] [drm] RAM header offset: 0x3ffe000 
     37[    1.110311] [drm] rom modes offset 0x488 for 128 modes 
     38[    1.110364] [drm] qxl: 16M of VRAM memory size 
     39[    1.110364] [drm] qxl: 63M of IO pages memory ready (VRAM domain) 
     40[    1.110365] [drm] qxl: 64M of Surface memory size 
     41[    1.112882] [drm] main mem slot 1 [f4000000,3ffe000] 
     42[    1.112884] [drm] surface mem slot 2 [f8000000,4000000] 
     43[    1.113677] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). 
     44[    1.113679] [drm] No driver support for vblank timestamp query. 
     45[    1.113891] [drm] fb mappable at 0xF4000000, size 3145728 
     46[    1.113891] [drm] fb: depth 24, pitch 4096, width 1024, height 768 
     47[    1.113892] fb: switching to qxldrmfb from VESA VGA 
     48[    1.115537] fbcon: qxldrmfb (fb0) is primary device 
     49[    1.116425] [drm:qxl_enc_commit [qxl]] *ERROR* head number too large or missing monitors config: ffffc90000748000, 0 
     50[    1.118767] qxl 0000:00:02.0: fb0: qxldrmfb frame buffer device 
     51[    1.136842] [drm] Initialized qxl 0.1.0 20120117 for 0000:00:02.0 on minor 0 
     52}}} 
     53 
     54 * minecraftは一応動いた[[br]][[Image(QXL-minecraft.png)]] 
     55 
     56 === virtio-vga (no 3D) === 
     57 * mitty@guest:~$ lspci 
     58{{{ 
     5900:02.0 VGA compatible controller: Red Hat, Inc Virtio GPU (rev 01) 
     60}}} 
     61 * mitty@guest:~$ dmesg | grep drm 
     62{{{ 
     63[    0.690401] [drm] Initialized drm 1.1.0 20060810 
     64[    0.714409] [drm] pci: virtio-vga detected 
     65[    0.714412] fb: switching to virtiodrmfb from VESA VGA 
     66[    0.714786] [drm] virgl 3d acceleration not available 
     67[    0.715117] [drm] virtio vbuffers: 80 bufs, 192B each, 15kB total. 
     68[    0.715164] [drm] number of scanouts: 1 
     69[    0.715177] [drm] number of cap sets: 0 
     70[    0.717593] virtio_gpu virtio0: fb0: virtiodrmfb frame buffer device 
     71[    0.726158] [drm] Initialized virtio_gpu 0.0.1 0 on minor 0 
     72}}} 
     73 
     74 * 3Dが有効にならない場合、QXLとほぼ変わらない[[br]][[Image(virgil_no3d-minecraft.png)]] 
     75 
     76 ==== errors ==== 
     77 * [https://www.kraxel.org/blog/2015/10/virtio-gpu-and-libvirt/ virtio-gpu and libvirt | kraxel's news] こちらを参考に、virsh editで直接編集してみたが、起動に失敗する 
     78 
     79 1. mitty@host:~$ diff -u virgil.orig.xml virgil.gl.xml 
     80{{{#!diff 
     81--- virgil.orig.xml     2016-10-08 20:47:22.762150999 +0900 
     82+++ virgil.gl.xml       2016-10-08 20:49:14.199368411 +0900 
     83@@ -87,6 +87,7 @@ 
     84     <graphics type='spice' autoport='yes' listen='0.0.0.0'> 
     85       <listen type='address' address='0.0.0.0'/> 
     86       <image compression='off'/> 
     87+      <gl enable='yes'/> 
     88     </graphics> 
     89     <sound model='ich6'> 
     90       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
     91}}} 
     92  * mitty@host:~$ virsh start virgil 
     93{{{ 
     94error: Failed to start domain virgil 
     95error: unsupported configuration: This QEMU doesn't support spice OpenGL 
     96}}} 
     97 2. mitty@host:~$ diff -u virgil.orig.xml virgil.gl.xml 
     98{{{#!diff 
     99--- virgil.orig.xml     2016-10-08 20:47:22.762150999 +0900 
     100+++ virgil.gl.xml       2016-10-09 00:12:45.044761666 +0900 
     101@@ -1,4 +1,4 @@ 
     102-<domain type='kvm'> 
     103+<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> 
     104   <name>virgil</name> 
     105   <uuid>afd14745-a9f3-44ea-b2da-e2eefabea22b</uuid> 
     106   <memory unit='KiB'>4194304</memory> 
     107@@ -84,10 +84,7 @@ 
     108     </channel> 
     109     <input type='mouse' bus='ps2'/> 
     110     <input type='keyboard' bus='ps2'/> 
     111-    <graphics type='spice' autoport='yes' listen='0.0.0.0'> 
     112-      <listen type='address' address='0.0.0.0'/> 
     113-      <image compression='off'/> 
     114-    </graphics> 
     115+    <graphics type='sdl' display=':0' xauth='/home/mitty/.Xauthority'/> 
     116     <sound model='ich6'> 
     117       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
     118     </sound> 
     119@@ -105,5 +102,11 @@ 
     120       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> 
     121     </memballoon> 
     122   </devices> 
     123+  <qemu:commandline> 
     124+    <qemu:arg value='-set'/> 
     125+    <qemu:arg value='device.video0.driver=virtio-vga'/> 
     126+    <qemu:arg value='-display'/> 
     127+    <qemu:arg value='gtk,gl=on'/> 
     128+  </qemu:commandline> 
     129 </domain> 
     130}}} 
     131  * mitty@host:~$ virsh start virgil 
     132{{{ 
     133error: Failed to start domain virgil 
     134error: internal error: process exited while connecting to monitor: Unable to init server: Could not connect: Connection refused 
     1352016-10-08T15:12:30.027297Z qemu-system-x86_64: OpenGL is not supported by the display 
     136}}} 
     137  * ホスト上でXを動かせば良さそう