s
This repo is a code snapshot of the i915 module from https://github.com/intel/mainline-tracking/tree/linux/v6.12 and will randomly merge patches from the linux-stable tree.
This package is highly experimental, you should only use it when you know what you are doing.
You need to install this dkms module in both host and guest!
Tested kernel versions: 6.12.10-zen1/6.11.9-arch1/6.10.9-arch1/6.9.10-arch1/6.8.9-arch1 with ArchLinux
intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe
echo 2 > /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs
You can create up to 7 VFs on Intel UHD Graphics
For Arch Linux users, it is available in AUR. i915-sriov-dkms
You also can download the package from the releases page and install it with pacman -U
.
apt install build-* dkms
apt install proxmox-headers-6.8 proxmox-kernel-6.8
(for unsigned kernel).mkdir /opt/i915-sriov && cd /opt/i915-sriov
wget [release_package_url]
Running it in /root
might cause issues.
apt install ./i915-sriov-dkms_2024.12.30_amd64.deb
nano /etc/default/grub
and change GRUB_CMDLINE_LINUX_DEFAULT
to intel_iommu=on i915.enable_guc=3 i915.max_vfs=7
, or add to it if you have other arguments there already.grub
and initramfs
by executing update-grub
and update-initramfs -u
proxmox-boot-tool
.sysfs
attribute must be set. Install sysfsutils
, then do echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
, assuming your iGPU is on 00:02 bus. If not, use lspci | grep VGA
to find the PCIe bus your iGPU is on.We will need to run the same driver under Linux guests.
apt install build-* dkms linux-headers-$(uname -r) linux-modules-extra-$(uname -r)
.deb
mkdir /opt/i915-sriov && cd /opt/i915-sriov
wget [release_package_URL]
apt install ./[release_package_name]
xe
driver from kernel command line
nano /etc/default/grub
#find this line and modify, note the double quotes
GRUB_CMDLINE_LINUX_DEFAULT="GRUB_CMDLINE_LINUX_DEFAULT="module_blacklist=xe""
modprobe
:
echo 'blacklist xe' > /etc/modprobe.d/blacklist.conf
echo 'options i915 enable_guc=3' > /etc/modprobe.d/i915.conf
grub
and initramfs
, then reboot.
update-grub
update-initramfs -u
dmesg | grep i915
to see if your VF is recognized by the kernel. You should also check if xe
is blacklisted correctly by running lspci -nnk
to see which driver is in use by the VF.vainfo
by running apt install vainfo
, then do vainfo
to see if the iGPU has been picked up by the VAAPI.apt install intel-opencl-icd
apt install clinfo
clinfo
Thanks for resiliencer and his contribution in #225.
These steps ensure compatibility across all driver versions. In theory you can install any version and won't be hit by the dreaded Code 43
.
UEFITool_NE_A68_win64
for Windows. They supply Linux and Mac binaries, too).cap
)Action - Search
or use keyboard shortcut ctrl+F
and search for Hex string 49006e00740065006c00280052002900200047004f0050002000440072006900760065007200
Extract body...
intelgopdriver_desktop
and it would save as intelgopdriver_desktop.bin
.Get-FileHash -Path "path-to-rom" -Algorithm SHA256
131c32cadb6716dba59d13891bb70213c6ee931dd1e8b1a5593dee6f3a4c2cbd
FA12486D93BEE383AD4D3719015EFAD09FC03352382F17C63DF10B626755954B
/usr/share/kvm
directory on Proxmox host. I uploaded it to a NAS and downloaded it with wget
.CPU
as host
.Shift+F10
at the first setup screen and type OOBE\BYPASSNRO
. The VM will reboot, and you can choose "I don't have Internet" option to set up a local account. Alternatively, you can remove the network device from the Windows VM.
# Passing the 02.1 VF, specify the romfile. ROM path is relative
hostpci0: 0000:00:02.1,pcie=1,romfile=Intelgopdriver_desktop.efi,x-vga=1
5. In the `Hardware` tab, set `Display` to `none`.
6. Start the VM. You won't be able to access it with console, so your only way in is Remote Desktop. Once you are in, download the graphics driver from Intel, any version should work.
7. During install, you may experience black screen when the actual graphics drivers are being installed and applied. This black screen will persist until you restart the VM. My advice is give it a few minutes to do its thing. You can make your best judgement by looking at the VM CPU usage in Proxmox.
8. After rebooting, connect with RDP once again. Go to Device Manager and verify the result. You should see the Intel Graphics is installed and working.

See also: https://github.com/strongtz/i915-sriov-dkms/issues/8#issuecomment-1567465036
## Manual Installation Steps
1. Install build tools: `apt install build-essential dkms git` / `pacman -S base-devel dkms git`.
1. Install the kernel and headers for desired version: `apt install linux-headers-$(uname -r)` / `pacman -S linux-headers`.
1. Clone the repository: `git clone https://github.com/strongtz/i915-sriov-dkms.git`.
1. Add the module to DKMS: `dkms add ./i915-sriov-dkms`.
1. Install the module with DKMS: `dkms install i915-sriov-dkms/2025.01.22`.
1. Once finished, the kernel commandline needs to be adjusted: `nano /etc/default/grub` and change `GRUB_CMDLINE_LINUX_DEFAULT` to `intel_iommu=on i915.enable_guc=3 i915.max_vfs=7`, or add to it if you have other arguments there already.
1. Update `grub` and `initramfs` by executing `update-grub` and `update-initramfs -u` / for Arch Linux `grub-mkconfig -o /boot/grub/grub.cfg` and `mkinitcpio -P`.
1. Optionally use `sysfsutils` to set the number of VFs on boot. Install `sysfsutils`, then do `echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf`, assuming your iGPU is on 00:02 bus. If not, use `lspci | grep VGA` to find the PCIe bus your iGPU is on.
1. Reboot the system.
## Uninstallation
### apt
Remove the package with `apt remove i915-sriov-dkms`
### pacman
Remove the package with `pacman -R i915-sriov-dkms`
### manual
Remove the dkms module with `dkms remove i915-sriov-dkms/2025.01.22`
# Credits
Major contributors to this repository are listed below.
* [@strongtz](https://github.com/strongtz) _Create the initial dkms module_
* [@zhtengw](https://github.com/zhtengw) _Rebase on the linux-intel-lts (v5.15, v6.1) , support for v6.1~v6.4, participation in 15+ issues_
* [@bbaa-bbaa](https://github.com/bbaa-bbaa) _Rebase on the mainline-tracking linux/v6.12 branch, support for v6.8~v6.13, participation in 10+ issues_
* [@pasbec](https://github.com/pasbec) _Major refactor to the repo, support for (v6.2, v6.5, v6.8), participation in 20+ issues_
* [@shenwii](https://github.com/shenwii) _Support for (v6.7, v6.9)_
* [@MotherOfTheGracchi](https://github.com/MotherOfTheGracchi) _Support for v6.5.3_
* [@michael-pptf](https://github.com/michael-pptf) _Several updates to README.md, participation in 20+ issues_