IGVT-g: Difference between revisions

From NixOS Wiki
imported>Gnidorah
No edit summary
imported>Gnidorah
No edit summary
Line 1: Line 1:
Intel GVT-g is a full GPU virtualization solution with mediated pass-through which allows host and multiple guests to share same Intel integrated videocard. Guest gets a near-native graphics peformance.
Intel GVT-g is a full GPU virtualization solution with mediated pass-through which allows host and multiple guests to share same Intel integrated videocard. Guest gets a near-native graphics peformance.


Win7-32 / Win7-64 / Win8.1-64 /Win10-RS1-64 are validated. Install recent Intel driver into the guest.
Win7-32 / Win7-64 / Win8.1-64 /Win10-RS1-64 are validated.


== Hardware Requirements ==
== Hardware Requirements ==
Line 57: Line 57:
== Configure KVM ==
== Configure KVM ==


Support for local display is present in Qemu 2.12. Only BIOS (SeaBIOS) machine is supported, UEFI (OVMF) is not supported.
Support for local display is present in Qemu 2.12.


=== Bare Qemu ===
=== Bare Qemu ===
Line 97: Line 97:
Finally use sudo virt-viewer --attach win10
Finally use sudo virt-viewer --attach win10


== Issues with libvirtd ==
== FAQ ==


* No video output
* No video output


Change main adapter type from QXL to say Cirrus
Possible solutions


* Still no video output
(libvirtd) Change main adapter type from QXL to say Cirrus


Ensure that mdev's hostdev device is the first or bump device.hostdev0 index
use BIOS (SeaBIOS) machine, UEFI (OVMF) is not supported


* "Element domain has extra content: qemu:commandline" error after editing via virsh
ensure that the recent Intel graphics driver is installed in the guest


You forgot to add <nowiki>xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'</nowiki>
* (libvirtd) "Element domain has extra content: qemu:commandline" error after editing via virsh


* no drm render node available
you forgot to add <nowiki>xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'</nowiki>


in virt-manager change spice display render node from auto to available one
* (libvirtd) "no drm render node available" error in virt-manager
 
in virt-manager change SPICE display render node from auto to available one
 
* "write_loop: No space left on device" error when creating mdev device
 
check dmesg output for gvt related error, most likely there is not enough VRAM


== Used sources ==
== Used sources ==


* [https://www.kraxel.org/blog/2018/04/vgpu-display-support-finally-merged-upstream/ <em>vgpu display support</em> on a contributor (kraxel)'s blog] - this guide misses info that Windows guests do require x-igd-opregion=on parameter and also that QXL goes into conflict
* [https://www.kraxel.org/blog/2018/04/vgpu-display-support-finally-merged-upstream/ <em>vgpu display support</em> on a contributor (kraxel)'s blog] - this guide misses info that Windows guest requires x-igd-opregion=on parameter and also that QXL may go into conflict
* https://github.com/intel/gvt-linux/wiki/GVTg_Setup_Guide - obsoleted guide, but some parts are useful
* https://github.com/intel/gvt-linux/wiki/GVTg_Setup_Guide - obsoleted guide, but some parts are useful
* https://github.com/intel/gvt-linux/wiki/Dma_Buf_User_Guide - obsoleted guide, but some parts are useful
* https://github.com/intel/gvt-linux/wiki/Dma_Buf_User_Guide - obsoleted guide, but some parts are useful

Revision as of 04:52, 16 May 2018

Intel GVT-g is a full GPU virtualization solution with mediated pass-through which allows host and multiple guests to share same Intel integrated videocard. Guest gets a near-native graphics peformance.

Win7-32 / Win7-64 / Win8.1-64 /Win10-RS1-64 are validated.

Hardware Requirements

For client platforms, 5th, 6th or 7th Generation Intel® Core Processor Graphics is required. For server platforms, E3_v4, E3_v5 or E3_v6 Xeon Processor Graphics is required.

NixOS configuration

/etc/nixos/configuration.nix
  boot.kernelPackages = pkgs.linuxPackages_4_16;
  boot.kernelParams = [ "i915.enable_gvt=1" ];
  nixpkgs.config.packageOverrides = super: let self = super.pkgs; in {
    linux_4_16 = super.linux_4_16.override {
      extraConfig = ''
  # since 4.16-rc1
  DRM_I915_GVT y
  DRM_I915_GVT_KVMGT m
      '';
    };
  };
  environment.systemPackages = with pkgs; [
  virtmanager
  virt-viewer
  libossp_uuid
  ];
  virtualisation.libvirtd.enable = true;
  users.extraUsers.user.extraGroups = [ "libvirtd" ];

Create or destroy VGPU

Show mode information

$ cat /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_8/description 
low_gm_size: 64MB
high_gm_size: 384MB
fence: 4
resolution: 1024x768
weight: 2

Create

$ uuid
a297db4a-f4c2-11e6-90f6-d3b88d6c9525
# echo "a297db4a-f4c2-11e6-90f6-d3b88d6c9525" > "/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_8/create"

Destroy

# echo 1 > /sys/bus/pci/devices/0000:00:02.0/a297db4a-f4c2-11e6-90f6-d3b88d6c9525/remove

Configure KVM

Support for local display is present in Qemu 2.12.

Bare Qemu

  qemu-system-x86_64 \
     -enable-kvm \
     -m 1G \
     -nodefaults \
     -M graphics=off \
     -serial stdio \
     -display gtk,gl=on \
     -device vfio-pci,sysfsdev=/sys/bus/mdev/devices/a297db4a-f4c2-11e6-90f6-d3b88d6c9525,x-igd-opregion=on

libvirtd

If using virt-manager, create new or open existing VM.

sudo -E virsh edit win10

 <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
 <devices>
 <graphics type='spice'>
  <listen type='none'/>
  <gl enable='yes'/>
 </graphics>
 <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'>
  <source>
    <address uuid='a297db4a-f4c2-11e6-90f6-d3b88d6c9525'/>
  </source>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
 </hostdev>
 </devices>
  <qemu:commandline>
   <qemu:arg value='-set'/>
   <qemu:arg value='device.hostdev0.x-igd-opregion=on'/>
  </qemu:commandline>
 </domain>

Finally use sudo virt-viewer --attach win10

FAQ

  • No video output

Possible solutions

(libvirtd) Change main adapter type from QXL to say Cirrus

use BIOS (SeaBIOS) machine, UEFI (OVMF) is not supported

ensure that the recent Intel graphics driver is installed in the guest

  • (libvirtd) "Element domain has extra content: qemu:commandline" error after editing via virsh

you forgot to add xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'

  • (libvirtd) "no drm render node available" error in virt-manager

in virt-manager change SPICE display render node from auto to available one

  • "write_loop: No space left on device" error when creating mdev device

check dmesg output for gvt related error, most likely there is not enough VRAM

Used sources