IGVT-g: Difference between revisions
imported>Samueldr m Adds external resource link about that feature |
imported>Gnidorah No edit summary |
||
Line 8: | Line 8: | ||
== NixOS configuration == | == NixOS configuration == | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
/etc/nixos/configuration.nix | |||
boot.kernelPackages = pkgs.linuxPackages_4_16; | boot.kernelPackages = pkgs.linuxPackages_4_16; | ||
boot.kernelParams = [ "i915.enable_gvt=1" ]; | boot.kernelParams = [ "i915.enable_gvt=1" ]; | ||
Line 27: | Line 26: | ||
]; | ]; | ||
virtualisation.libvirtd.enable = true; | virtualisation.libvirtd.enable = true; | ||
users.extraUsers. | users.extraUsers.user.extraGroups = [ "libvirtd" ]; | ||
</nowiki>}} | |||
== Create or destroy VGPU == | == Create or destroy VGPU == | ||
Line 61: | Line 60: | ||
=== Bare Qemu === | === Bare Qemu === | ||
<syntaxHighlight lang="sh"> | |||
qemu-system-x86_64 \ | qemu-system-x86_64 \ | ||
-enable-kvm \ | -enable-kvm \ | ||
Line 68: | Line 68: | ||
-serial stdio \ | -serial stdio \ | ||
-display gtk,gl=on \ | -display gtk,gl=on \ | ||
-device vfio-pci,sysfsdev=/sys/bus/mdev/devices/ | -device vfio-pci,sysfsdev=/sys/bus/mdev/devices/a297db4a-f4c2-11e6-90f6-d3b88d6c9525,x-igd-opregion=on | ||
</syntaxHighlight> | |||
=== libvirtd === | === libvirtd === | ||
If using virt-manager, create new or open existing VM. Its impossible to remove primary QXL videocard, but it will conflict, so change it to Cirrus. | If using virt-manager, create new or open existing VM. Its impossible to remove primary QXL videocard, but it will conflict, so change it to Cirrus. | ||
sudo -E virsh edit '''win10''' | {{file|sudo -E virsh edit '''win10'''|xml|<nowiki> | ||
<domain type='kvm | <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0> | ||
<!-- ... --> | |||
<devices> | <devices> | ||
<!-- ... --> | |||
<graphics type='spice'> | <graphics type='spice'> | ||
<listen type='none'/> | <listen type='none'/> | ||
<!-- choose renderer via virt-manager --> | |||
<gl enable='yes'/> | <gl enable='yes'/> | ||
</graphics> | </graphics> | ||
< | <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'> | ||
<source> | |||
<address uuid= | <address uuid='a297db4a-f4c2-11e6-90f6-d3b88d6c9525'/> | ||
</source> | |||
<!-- assign to first available slot --> | |||
<address type='pci' domain='0x0000' bus='0x00' slot= | <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> | ||
</hostdev> | </hostdev> | ||
</devices> | </devices> | ||
<qemu:commandline> | <qemu:commandline> | ||
<qemu:arg value='-set'/> | <qemu:arg value='-set'/> | ||
<qemu:arg value='device. | <qemu:arg value='device.hostdev0.x-igd-opregion=on'/> | ||
</qemu:commandline> | </qemu:commandline> | ||
</domain> | </domain> | ||
Finally use sudo virt-viewer --attach '''win10''' | Finally use sudo virt-viewer --attach '''win10''' | ||
Revision as of 19:29, 9 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. Install recent Intel driver into the guest.
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. Only BIOS (SeaBIOS) machine is supported, UEFI (OVMF) is not supported.
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. Its impossible to remove primary QXL videocard, but it will conflict, so change it to Cirrus.
{{file|sudo -E virsh edit win10|xml|<nowiki>
<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'>
<address uuid='a297db4a-f4c2-11e6-90f6-d3b88d6c9525'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' 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