Skip to content

Instantly share code, notes, and snippets.

@scyto
Last active December 26, 2024 22:06
Show Gist options
  • Save scyto/e4e3de35ee23fdb4ae5d5a3b85c16ed3 to your computer and use it in GitHub Desktop.
Save scyto/e4e3de35ee23fdb4ae5d5a3b85c16ed3 to your computer and use it in GitHub Desktop.

Enable & Using vGPU Passthrough

This gist is almost entirely not unlike Derek Seaman's awesome blog:

Proxmox VE 8: Windows 11 vGPU (VT-d) Passthrough with Intel Alder Lake

As such please refer to that for pictures, here i will capture the command lines I used as i sequence the commands a little differently so it makes more logic to me.

This gists assumes you are not running ZFS and are not passing any other PCIE devices (as both of these can require addtional steps - see Derek's blog for more info)

This gist assumes you are not running proxmox in UEFI Secure boot - if you are please refer entirely to dereks blog.

ALSO pleas refere to the comments section as folks have found workarounds and probably corrections (if the mistakes remain in my write up it is because i have't yet tested the corrections)

Note:i made no changes to the BIOS defaults on the Intel Nuc 13th Gen. This just worked as-is.

this gist is part of this series

Preparation

Install Build Requirements

apt update && apt install pve-headers-$(uname -r)
apt install git sysfsutils dkms build-* unzip -y

Install Other Drivers / Tools

This allow you to run vainfo, intel_gpu_top for testing and non-free versions of the encoding driver - without this you will not AFAIK be able to encoding with this GPU. This was missed in EVERY guide i saw for this vGPU, so not sure, but i had terrible issues until i did this.

edits the sources list with nano /etc/apt/sources.list

add the following lines:

#non-free firmwares
deb http://deb.debian.org/debian bookworm non-free-firmware

#non-free drivers and components
deb http://deb.debian.org/debian bookworm non-free

and save the file

apt update && apt install intel-media-va-driver-non-free intel-gpu-tools vainfo

This next step copies a driver missing on proxmox installs and will remove the -2 error for this file in dmesg.

wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/adlp_dmc.bin

cp adlp_dmc.bin /lib/firmware/i915/

Compile and Install the new driver

Clone github project

cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git

modify dkms.conf

cd i915-sriov-dkms
nano dkms.conf

change these two lines as follows:

PACKAGE_NAME="i915-sriov-dkms"
PACKAGE_VERSION="6.5"

save the file

Compile and Install the Driver

cd ~
mv i915-sriov-dkms/ /usr/src/i915-sriov-dkms-6.5
dkms install --force -m i915-sriov-dkms -v 6.5

and use dkms status to verify the module is now installed

Modify grub

edit the grub fle with nano /etc/default/grub

change this line in the file

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"

note: if you have already made modifications to this line in your grub file for other purposes you should also still keep those items

finally run

update-grub
update-initramfs -u

Find PCIe Bus and update sysfs.conf

use lspci | grep VGA t find the bus number

you should see something like this:

root@pve2:~# lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Raptor Lake-P [Iris Xe Graphics] (rev 04)

take the number on the far left and add to the sysfs.conf as follows - note all the proceeding zeros on the bus path are needed

echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf

REBOOT

Testing On Host

check devices

check devices with dmesg | grep i915

the last two lines should read as follows:

[    7.591662] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.7 on minor 7
[    7.591818] i915 0000:00:02.0: Enabled 7 VFs

if they don't then check all steps carefully

Validate with VAInfo

validate with vainfo you should see no errors (note this needs the drivers and tool i said to install at the top) and vainfo --display drm --device /dev/dri/cardN where N is a number from 0 to 7 - this will show you the acceleration endpoints for each VF

Check you can monitor the VFs - if not you have issues

monitor any VF renderer in real time with intel_gpu_top -d drm:/dev/dri/renderD128 there is one per VF - to see them all use ls -l /dev/dri

Configure vGPU Pool in Proxmox

  1. navigate to Datacenter > Resource Mappings
  2. click add in PCI devices
  3. name the pool something like vGPU-Pool
  4. map all 7 VFs for pve 1 but NOT the root device i.e 0000:00:02.x not 0000:00:02
  5. click create
  6. on the created pool lcikc the plus button next to vGPU-Pool
  7. select mapping on node = pve 2, ad all devices and click create
  8. repeat for pve3

The pool should now look like this:

image

Note: machines with PCI pass through devices cannot be live migrated, they must be shutdown, migrated offline to the new node and then started.

EVERYTIME THE KERNEL IS UPDATED IN PROXMOX YOU SHOULD DO THE FOLLOWING

update the kernel using proxox ui
dkms install -m i915-sriov-dkms -v 6.5 --force
reboot

How to get working in a privileged container

wow this one is hard.... you can avoid the id mapping stuff by not using a privileged container...

Assumptions:

  1. you have a debian 12 container, you added the non-free deb and have installed the non-free drivers as per the host instructions
  2. you have run cat /etc/groups in the container and noted down the GID for render (lets call that CTRGID) and gid for video (lets call that CTVGID).
  3. you have run cat /etc/groups in the container and noted down the GID for render (lets call that HSTRGID) and gid for video (lets call that HSTVGID). 5 that you have va info fully working

Create Container

  1. create container privileged, with debian 12, starts it
  2. apt update, apt upgrade, install non free drivers, vainfo and intel_gpu_top tools
  3. add root to user and video groups (this will mean when we get to ID mapping you don't need to tart about with user mappings - only group ones)
usermod -a -G render root
usermod -a -G video root
  1. shutdown container

Edit container conf file

  1. These are stored in /etc/pve/lxc and have the VMID.conf anme
  2. nano /etc/pve/lxc/VMID.conf

Add lxc device mapping

Here you add a line for the card uyou want and the rendere. Note if you map a VF (card) to a container it means that is hard mapped, if you have that VF in a pool for VMs please remove it from the pool (this means also these containers cannot be HA)

In the example below i chose card6 - which is renderD134 These are mapped into the container as card0 and renderD128 Change your numbers as per your own VF / card mappings

lxc.cgroup2.devices.allow: c 226:6 rwm
lxc.mount.entry: /dev/dri/card6 dev/dri/card0 none bind,optional,create=file

lxc.cgroup2.devices.allow: c 226:134 rwm
lxc.mount.entry: /dev/dri/renderD134 dev/dri/renderD128 none bind,optional,create=file

Add ID mapping (only needed in unprivileged)

  1. add the following... and here it gets complex as it will vary based on the numbers you recorded earlier - let me try... the aim is to have a continguois block of mappings but the syntax is um difficult...
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 CTVGID
lxc.idmap: g CTVGID HSTVGID 1
lxc.idmap: g CTVGID+1 1000{CTVGID+1} CTRGID-CTVGID-1
lxc.idmap: g CTRGID HSTVGID 1
lxc.idmap: g CTRGID+1 100{CTRGID+1} 65536-{CTRGID+1}

so as an example, these are my values:

        host > ct
video:    44 > 44
render:  104 > 106

this is what i added to my VMID.conf file (in my case /etc/pve/lxc/107.conf

lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 44
lxc.idmap: g 44 44 1
lxc.idmap: g 45 100045 61
lxc.idmap: g 106 104 1
lxc.idmap: g 107 100107 65429
  1. add your two CT values to nano /etc/subgid (only needed in unprivileged)

in my case:

root:106:1
root:44:1

after this you should be able to start up the container and run vainfo and perform transcoding.

check permissions with ls -la /dev/dri it should look like this:

root@vGPU-debian-test:~# ls -la /dev/dri
total 0
drwxr-xr-x 2 root   root         80 Oct  7 00:22 .
drwxr-xr-x 7 root   root        500 Oct  7 00:22 ..
crw-rw-rw- 1 nobody video  226,   0 Oct  4 21:42 card0
crw-rw-rw- 1 nobody render 226, 128 Oct  4 21:42 renderD128

if the group names do not say video and render then you did something wrong

**Note: YYMV **

For example plex HW transcoded just fine on my system.

Emby on the otherhand seems to interrogate the kernel driver directly and gets the wrong answers - this is IMHO an issue with their detection logic not supporting this scenario.

Another example is intel_gpu_top which doesn't seem to work in this mode either - this is because it only works with the PMUs not the VFs (so somoene said)

Or maybe i just have no clue what i am doing, lol.

---work in progress 2023.10.6---

add vGPU to a Windows 11 or Server 2022 VM

  1. create VM with CPU set to host DO NOT CHANGE THIS
  2. boot VM without vGPU and display set to default
  3. install windows 11
  4. install VirtIO drivers [as of 4.6.2024 do not install guest tools - this may cause repair loops]
  5. shutdown VM and change display to VirtIO-GPU
  6. Now add the vGPU pool as a PCI device
  7. when creating a VM add a PCI device and add the poool as follows:

image

  1. now boot into VM and install latest IrisXe drivers from intel
  2. you should now have graphics acceleration availble to apps wether you connect by webcolse VNC, SPICE or an RDP client

From @rinze24:

If you follow the guide successfully, in Device Manager you will see:

  • Microsoft Basic Display Adapter - If you use Display in VM Settings
  • Intel iGPU - passthrough

You have 2 options (or more) to use your iGPU. Because Windows 11 decide on its own which graphics to use.

  1. Setup Remote Desktop Connection in Windows 11 and set the display to none in VM Hardware settings.
  • Pro: No configuration per app, Responsive Connection.
  • Con: No proxmox console.
  1. Inside Windows Set which graphics preference to use per application in Display Settings -> Graphics Settings-
  • Pro: Have proxmox console.
  • Con: Need to configure per application / program.

If you hit automatic repair loop at any point shutdown the machine and edit its conf file in /etc/pve/qemu-server and add args: -cpu Cooperlake,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,+vmx

@tristan-k
Copy link

For Meteor Lake support see my comment here.

@Ogglord
Copy link

Ogglord commented Sep 20, 2024

For Meteor Lake support see my comment here.

We have very similar problems, @tristan-k - except I'm on Alder Lake.. Lets crack this!

@Ogglord
Copy link

Ogglord commented Sep 20, 2024

I think I am one step closer (REF)
what I did was the following:

$ GUCFIRMWARE_MINOR=13 dkms install -m i915-sriov-dkms -v $(cat VERSION) -k $(uname -r) --force --kernelsourcedir /usr/src/linux-headers-$(uname -r)

and also copying all *.bin files from the official kernel tree, e.g.

$ mkdir firmware
$ cd firmware
$ wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
$ mv *.bin /lib/firmware/i915/

This got rid of these rows

[    4.484778] i915 0000:00:02.7: [drm] *ERROR* GT0: IOV: Unable to confirm version 1.13 (0000000000000000)
[    4.485107] i915 0000:00:02.7: [drm] *ERROR* GT0: IOV: Found interface version 0.1.13.4

Finally, I read here that intel_gpu_top doesn't like to run on Virtual Functions. So I will continue on with trying passthrough to a VM.

@scyto
Copy link
Author

scyto commented Sep 20, 2024 via email

@rjblake
Copy link

rjblake commented Sep 20, 2024

I think I am one step closer (REF) what I did was the following:

$ GUCFIRMWARE_MINOR=13 dkms install -m i915-sriov-dkms -v $(cat VERSION) -k $(uname -r) --force --kernelsourcedir /usr/src/linux-headers-$(uname -r)

and also copying all *.bin files from the official kernel tree, e.g.

$ mkdir firmware
$ cd firmware
$ wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
$ mv *.bin /lib/firmware/i915/

This got rid of these rows

[    4.484778] i915 0000:00:02.7: [drm] *ERROR* GT0: IOV: Unable to confirm version 1.13 (0000000000000000)
[    4.485107] i915 0000:00:02.7: [drm] *ERROR* GT0: IOV: Found interface version 0.1.13.4

Finally, I read here that intel_gpu_top doesn't like to run on Virtual Functions. So I will continue on with trying passthrough to a VM.

Will check on my system. Have the same errors, but other than the error appearing in the log, all VFs working without issue (Plex HW transcoding, Windows 11 VM with iGPU passthrough). Probably just start with updating i915 firmwares first.

Will update on findings.

@scyto
Copy link
Author

scyto commented Sep 20, 2024

did you try the GUCFIRMWARE without copying files (for example GUCFIRMWARE_MINOR=13.4 or 13 without copying files)
because the ERROR shows that the files are already there and being used. - it found the file and just didn't like the version number - maybe because the formats are different, not sure...

also so i can record it somewhere, this is a list of the difference in the files between the existing firmware directory and the one that comes with your download command

root@pve1:~/i915-latest-firmware# diff -qn . /lib/firmware/i915 | sort
Only in .: adlp_dmc_ver2_09.bin
Only in .: adlp_dmc_ver2_10.bin
Only in .: adlp_dmc_ver2_14.bin
Only in .: bmg_dmc.bin
Only in .: bxt_guc_32.0.3.bin
Only in .: bxt_guc_33.0.0.bin
Only in .: bxt_guc_49.0.1.bin
Only in .: cml_guc_33.0.0.bin
Only in .: cml_guc_69.0.3.bin
Only in .: cnl_dmc_ver1_06.bin
Only in .: dg1_guc_49.0.1.bin
Only in .: dg1_guc_70.1.1.bin
Only in .: dg1_huc_7.7.1.bin
Only in .: dg2_dmc_ver2_07.bin
Only in .: dg2_guc_70.4.1.bin
Only in .: ehl_guc_33.0.4.bin
Only in .: ehl_guc_69.0.3.bin
Only in .: glk_guc_32.0.3.bin
Only in .: glk_guc_33.0.0.bin
Only in .: glk_huc_ver03_01_2893.bin
Only in .: icl_guc_49.0.1.bin
Only in .: icl_guc_69.0.3.bin
Only in .: icl_huc_ver8_4_3238.bin
Only in .: kbl_dmc_ver1_01.bin
Only in .: kbl_guc_32.0.3.bin
Only in .: kbl_guc_49.0.1.bin
Only in .: kbl_guc_69.0.3.bin
Only in .: kbl_guc_ver9_14.bin
Only in .: kbl_huc_ver02_00_1810.bin
Only in /lib/firmware/i915: adlp_guc_70.19.2.bin
Only in /lib/firmware/i915: cml_guc_62.0.0.bin
Only in /lib/firmware/i915: cml_guc_70.1.1.bin
Only in /lib/firmware/i915: cml_huc_4.0.0.bin
Only in /lib/firmware/i915: dg1_dmc_ver2_02.bin
Only in /lib/firmware/i915: dg1_guc_70.bin
Only in /lib/firmware/i915: dg1_huc.bin
Only in /lib/firmware/i915: dg2_dmc_ver2_08.bin
Only in /lib/firmware/i915: dg2_guc_70.bin
Only in /lib/firmware/i915: dg2_huc_gsc.bin
Only in /lib/firmware/i915: glk_huc_4.0.0.bin
Only in /lib/firmware/i915: icl_huc_9.0.0.bin
Only in /lib/firmware/i915: kbl_dmc_ver1_04.bin
Only in /lib/firmware/i915: kbl_guc_62.0.0.bin
Only in /lib/firmware/i915: kbl_guc_70.1.1.bin
Only in /lib/firmware/i915: kbl_huc_4.0.0.bin
Only in /lib/firmware/i915: mtl_dmc.bin
Only in /lib/firmware/i915: mtl_gsc_1.bin
Only in /lib/firmware/i915: mtl_guc_70.bin
Only in /lib/firmware/i915: rkl_dmc_ver2_03.bin
Only in /lib/firmware/i915: skl_dmc_ver1_27.bin
Only in /lib/firmware/i915: skl_guc_62.0.0.bin
Only in /lib/firmware/i915: skl_guc_70.1.1.bin
Only in /lib/firmware/i915: tgl_dmc_ver2_12.bin
Only in /lib/firmware/i915: tgl_guc_69.0.3.bin
Only in /lib/firmware/i915: tgl_guc_70.bin
Only in .: mtl_dmc_ver2_10.bin
Only in .: rkl_dmc_ver2_02.bin
Only in .: skl_dmc_ver1_23.bin
Only in .: skl_guc_32.0.3.bin
Only in .: skl_guc_49.0.1.bin
Only in .: skl_guc_69.0.3.bin
Only in .: skl_guc_ver1.bin
Only in .: tgl_dmc_ver2_04.bin
Only in .: tgl_guc_35.2.0.bin
Only in .: tgl_guc_49.0.1.bin
Only in .: tgl_huc_7.0.12.bin
Only in .: tgl_huc_7.0.3.bin
Only in .: tgl_huc_7.5.0.bin
Only in .: xe2lpd_dmc.bin

i am not convinced copying files over would have made the difference unless you missed that step for the needed files in the gist?
( will try later when i get time)

@rjblake
Copy link

rjblake commented Sep 21, 2024

@scyto - you are correct. All I did was rebuild using the GUCFIRMWARE_MINOR=13 without copying files and the error is gone. I do see, however, that I have another error (apparently started with an earlier 6.8.x kernel) as follows:

[ 4.953984] xe 0000:00:02.5: Your graphics device 4680 is not officially supported
by xe driver in this kernel version. To force Xe probe,
use xe.force_probe='4680' and i915.force_probe='!4680'
module parameters or CONFIG_DRM_XE_FORCE_PROBE='4680' and
CONFIG_DRM_I915_FORCE_PROBE='!4680' configuration options.

Adding those to my grub cause the VFs to not be listed.

@Ogglord
Copy link

Ogglord commented Sep 21, 2024

Unfortunately I did the firmware step and GUCFIRMWARE_MINOR=13 simultaneously. But it sounds like the latter was the key?
If you add xe.force_probe='4680' and i915.force_probe='!4680' then you basically use xe instead of i915, which defeats the whole purpose, so ignore that message.

I have VFs working flawlessly in three simultaneous virtual machines with Win11. It feels super snappy as well. I did not have to add the GenuineIntel vendor stuff.

@Ogglord
Copy link

Ogglord commented Sep 21, 2024

I simply merged my existing firmware directory with the download command.

@scyto wrote:

Interesting, my error is for a different version, did the log show what interface version you had after copying all the firmware’s?

Here are the relevant lines from dmesg:

[    2.999219] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adls_dmc_ver2_01.bin (v2.1)
[    3.009788] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.bin version 70.29.2
[    3.009793] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
...
    3.821415] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.13.4
[    3.821716] i915 0000:00:02.1: [drm] VT-d active for gfx access
[    3.821737] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[    3.822091] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.13.4
[    3.822407] i915 0000:00:02.1: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    3.822409] i915 0000:00:02.1: HuC firmware PRELOADED
[    3.823905] i915 0000:00:02.1: [drm] Protected Xe Path (PXP) protected content support initialized
[    3.823911] i915 0000:00:02.1: [drm] PMU not supported for this GPU.
[    3.823961] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.1 on minor 1
[    3.824151] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    3.824155] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='4690' and i915.force_probe='!4690'

From what I can tell, all versions are identical (to my dmesg from the earlier post).

@scyto
Copy link
Author

scyto commented Sep 22, 2024

Given none of the firmware version changed I am not clear why the copying would do anything, you can see this in the dmesg output before and after. Also when I did the directory compare there were no updated versions of the files our system uses. I will try the GUV minor version later today. Then we can validate if it is one or both changes.

@scyto
Copy link
Author

scyto commented Sep 22, 2024

This fixed it for me, no firmware copy needed. That said being on latest firmware is a good idea too.

GUCFIRMWARE_MINOR=4 dkms install -m i915-sriov-dkms -v 2024.08.09 --force --kernelsourcedir /usr/src/linux-headers-6.8.12-2-pve/

given this is a non breaking bug i wouldn't worry about it and i think it will be needed no matter what version drivers you have (replace the digit as needed)

@scyto
Copy link
Author

scyto commented Sep 22, 2024

and update, doing the file copy for updated fimrware didn't change version on mine at....

This was the versions of the firmwares.

[    4.330630] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[    4.340183] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.13.1
[    4.340188] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3

And the error is the same....

[    4.942723] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[    4.943225] i915 0000:00:02.1: [drm] *ERROR* GT0: IOV: Unable to confirm version 1.4 (0000000000000000)
[    4.943260] i915 0000:00:02.1: [drm] *ERROR* GT0: IOV: Found interface version 0.1.4.1
[    4.943611] i915 0000:00:02.1: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF

as such copying firmwares seems to be utterly irrelevant

@scyto
Copy link
Author

scyto commented Sep 22, 2024

copying firmwares from intels repro made no diff either https://github.com/intel-gpu/intel-gpu-firmware/tree/main/firmware my machine uses the firmwaress above, i wonder if it is pulling them from some other location that /lib/firmware/i915/

--edit--
nope it isn't only one copy of each i think what the interface version is reported is hardware dependent (i.e. that decides what firmware is and isn't loaded)

your hardware loads i915/adls_dmc_ver2_01.bin (v2.1) mine loads i915/adlp_dmc.bin (v2.20) i think this is the root of the difference in 1.4 vs 1.9.

@supportinvis
Copy link

image

can you help me if i get error like this ?

@itachi737
Copy link

itachi737 commented Sep 30, 2024

Hi,

Did anybody manage to get it working on a linux VM? I followed the instructions right now, it works for Windows vms as well as unprivileged LXCs, but I can't get it to work for Linux VMs (I tried Mint and Manjaro). I keep on getting this error:

[ 4.729149] i915 0000:01:00.0: [drm] *ERROR* Device is non-operational; MMIO access returns 0xFFFFFFFF!
[ 4.729539] i915 0000:01:00.0: Device initialization failed (-5)
[ 4.729542] i915 0000:01:00.0: Please file a bug on drm/i915; see https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html for details.
[ 4.729544] i915: probe of 0000:01:00.0 failed with error -5
[ 4.847984] xe 0000:01:00.0: Your graphics device 4680 is not officially supported by xe driver in this kernel version. To force Xe probe, use xe.force_probe='4680' and i915.force_probe='!4680' module parameters or CONFIG_DRM_XE_FORCE_PROBE='4680' and CONFIG_DRM_I915_FORCE_PROBE='!4680' configuration options.

The Linux VM see the Alder Lake iGPU, but the intel drivers won't load. I tried installing the drivers manually, but it says that they are already installed (as they should on kernel 6.8). So right now I'm at a loss. In my pve node, I also get the mismatched version 13.4 when it expects 13. I tried the GUCFIRMWARE_MINOR=13 fix, but it didn't change anything for me. I'm still seeing the error. Any recommendations on what to try next or if you know a fix would be greatly appreciated.

Thank you

@kamilllooo
Copy link

Hello everyone, has anyone of you encountered a similar problem and managed to solve it?
I tried different versions of the firmware by replacing the files with other versions, but it didn't solve my problem. I also installed different versions of the kernel, but it's still the same. Maybe someone has a suggestion what I should check/do. The whole situation happened after my last update of proxmox to the latest version. (I had a Pin made for the kernel, but it also stopped working)

#root@pve:~# dmesg | grep i915

[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.5.13-3-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
[ 0.054742] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.5.13-3-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
[ 3.945953] i915 0000:00:02.0: Running in SR-IOV PF mode
[ 3.947527] i915 0000:00:02.0: [drm] VT-d active for gfx access
[ 3.947657] i915 0000:00:02.0: vgaarb: deactivate vga console
[ 3.947835] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[ 3.948592] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 3.950131] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
[ 3.957507] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[ 3.963975] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.20.0
[ 3.963987] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[ 3.991256] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads!
[ 3.993557] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[ 3.993565] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[ 3.994172] i915 0000:00:02.0: [drm] GuC RC: enabled
[ 3.994273] i915 0000:00:02.0: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 3.994282] i915 0000:00:02.0: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 3.996642] mei_pxp 0000:00:16.0-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:00:02.0 (ops i915_pxp_tee_component_ops [i915])
[ 3.996923] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[ 4.093060] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
[ 4.095823] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 4.096487] i915 0000:00:02.0: 7 VFs could be associated with this PF
[ 4.096943] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[ 4.097410] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[ 5.511500] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
[ 5.511591] i915 0000:00:02.1: enabling device (0000 -> 0002)
[ 5.511622] i915 0000:00:02.1: Running in SR-IOV VF mode
[ 5.512192] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.512823] i915 0000:00:02.1: [drm] VT-d active for gfx access
[ 5.512848] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[ 5.513420] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.514095] i915 0000:00:02.1: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.514097] i915 0000:00:02.1: HuC firmware PRELOADED
[ 5.514294] i915 0000:00:02.1: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.514300] i915 0000:00:02.1: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.516606] i915 0000:00:02.1: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.516613] i915 0000:00:02.1: [drm] PMU not supported for this GPU.
[ 5.516726] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.1 on minor 1
[ 5.517069] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=io+mem
[ 5.517072] i915 0000:00:02.1: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 5.517144] i915 0000:00:02.2: enabling device (0000 -> 0002)
[ 5.517168] i915 0000:00:02.2: Running in SR-IOV VF mode
[ 5.517558] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.518188] i915 0000:00:02.2: [drm] VT-d active for gfx access
[ 5.518219] i915 0000:00:02.2: [drm] Using Transparent Hugepages
[ 5.518779] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.519425] i915 0000:00:02.2: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.519428] i915 0000:00:02.2: HuC firmware PRELOADED
[ 5.519719] i915 0000:00:02.2: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.519725] i915 0000:00:02.2: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.521718] i915 0000:00:02.2: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.521723] i915 0000:00:02.2: [drm] PMU not supported for this GPU.
[ 5.521827] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.2 on minor 2
[ 5.522168] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=io+mem
[ 5.522171] i915 0000:00:02.1: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.522174] i915 0000:00:02.2: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 5.522249] i915 0000:00:02.3: enabling device (0000 -> 0002)
[ 5.522274] i915 0000:00:02.3: Running in SR-IOV VF mode
[ 5.522556] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.523003] i915 0000:00:02.3: [drm] VT-d active for gfx access
[ 5.523028] i915 0000:00:02.3: [drm] Using Transparent Hugepages
[ 5.523579] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.524223] i915 0000:00:02.3: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.524226] i915 0000:00:02.3: HuC firmware PRELOADED
[ 5.524472] i915 0000:00:02.3: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.524478] i915 0000:00:02.3: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.526378] i915 0000:00:02.3: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.526384] i915 0000:00:02.3: [drm] PMU not supported for this GPU.
[ 5.526474] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.3 on minor 3
[ 5.526777] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=io+mem
[ 5.526780] i915 0000:00:02.1: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.526783] i915 0000:00:02.2: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.526786] i915 0000:00:02.3: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 5.526863] i915 0000:00:02.4: enabling device (0000 -> 0002)
[ 5.526886] i915 0000:00:02.4: Running in SR-IOV VF mode
[ 5.527198] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.527629] i915 0000:00:02.4: [drm] VT-d active for gfx access
[ 5.527651] i915 0000:00:02.4: [drm] Using Transparent Hugepages
[ 5.528174] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.528842] i915 0000:00:02.4: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.528844] i915 0000:00:02.4: HuC firmware PRELOADED
[ 5.529131] i915 0000:00:02.4: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.529137] i915 0000:00:02.4: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.530962] i915 0000:00:02.4: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.530968] i915 0000:00:02.4: [drm] PMU not supported for this GPU.
[ 5.531059] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.4 on minor 4
[ 5.531388] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=io+mem
[ 5.531391] i915 0000:00:02.1: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.531394] i915 0000:00:02.2: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.531397] i915 0000:00:02.3: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.531400] i915 0000:00:02.4: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 5.531476] i915 0000:00:02.5: enabling device (0000 -> 0002)
[ 5.531500] i915 0000:00:02.5: Running in SR-IOV VF mode
[ 5.531723] i915 0000:00:02.5: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.532229] i915 0000:00:02.5: [drm] VT-d active for gfx access
[ 5.532254] i915 0000:00:02.5: [drm] Using Transparent Hugepages
[ 5.532727] i915 0000:00:02.5: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.533433] i915 0000:00:02.5: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.533435] i915 0000:00:02.5: HuC firmware PRELOADED
[ 5.533649] i915 0000:00:02.5: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.533656] i915 0000:00:02.5: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.535872] i915 0000:00:02.5: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.535878] i915 0000:00:02.5: [drm] PMU not supported for this GPU.
[ 5.535973] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.5 on minor 5
[ 5.536279] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=io+mem
[ 5.536282] i915 0000:00:02.1: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.536285] i915 0000:00:02.2: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.536288] i915 0000:00:02.3: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.536291] i915 0000:00:02.4: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.536294] i915 0000:00:02.5: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 5.536362] i915 0000:00:02.6: enabling device (0000 -> 0002)
[ 5.536386] i915 0000:00:02.6: Running in SR-IOV VF mode
[ 5.536629] i915 0000:00:02.6: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.537129] i915 0000:00:02.6: [drm] VT-d active for gfx access
[ 5.537153] i915 0000:00:02.6: [drm] Using Transparent Hugepages
[ 5.537638] i915 0000:00:02.6: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.538326] i915 0000:00:02.6: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.538328] i915 0000:00:02.6: HuC firmware PRELOADED
[ 5.538525] i915 0000:00:02.6: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.538532] i915 0000:00:02.6: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.540772] i915 0000:00:02.6: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.540779] i915 0000:00:02.6: [drm] PMU not supported for this GPU.
[ 5.540917] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.6 on minor 6
[ 5.541250] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=io+mem
[ 5.541253] i915 0000:00:02.1: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.541256] i915 0000:00:02.2: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.541260] i915 0000:00:02.3: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.541262] i915 0000:00:02.4: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.541265] i915 0000:00:02.5: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 5.541268] i915 0000:00:02.6: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 5.541342] i915 0000:00:02.7: enabling device (0000 -> 0002)
[ 5.541367] i915 0000:00:02.7: Running in SR-IOV VF mode
[ 5.541613] i915 0000:00:02.7: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.542121] i915 0000:00:02.7: [drm] VT-d active for gfx access
[ 5.542148] i915 0000:00:02.7: [drm] Using Transparent Hugepages
[ 5.542647] i915 0000:00:02.7: [drm] GT0: GUC: interface version 0.1.9.0
[ 5.543342] i915 0000:00:02.7: GuC firmware PRELOADED version 1.9 submission:SR-IOV VF
[ 5.543344] i915 0000:00:02.7: HuC firmware PRELOADED
[ 5.543543] i915 0000:00:02.7: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 5.543550] i915 0000:00:02.7: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 5.545724] i915 0000:00:02.7: [drm] Protected Xe Path (PXP) protected content support initialized
[ 5.545731] i915 0000:00:02.7: [drm] PMU not supported for this GPU.
[ 5.545866] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.7 on minor 7
[ 5.546073] i915 0000:00:02.0: Enabled 7 VFs

@azsde
Copy link

azsde commented Oct 7, 2024

Hi,

Did anybody manage to get it working on a linux VM? I followed the instructions right now, it works for Windows vms as well as unprivileged LXCs, but I can't get it to work for Linux VMs (I tried Mint and Manjaro). I keep on getting this error:

[ 4.729149] i915 0000:01:00.0: [drm] *ERROR* Device is non-operational; MMIO access returns 0xFFFFFFFF! [ 4.729539] i915 0000:01:00.0: Device initialization failed (-5) [ 4.729542] i915 0000:01:00.0: Please file a bug on drm/i915; see https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html for details. [ 4.729544] i915: probe of 0000:01:00.0 failed with error -5 [ 4.847984] xe 0000:01:00.0: Your graphics device 4680 is not officially supported by xe driver in this kernel version. To force Xe probe, use xe.force_probe='4680' and i915.force_probe='!4680' module parameters or CONFIG_DRM_XE_FORCE_PROBE='4680' and CONFIG_DRM_I915_FORCE_PROBE='!4680' configuration options.

The Linux VM see the Alder Lake iGPU, but the intel drivers won't load. I tried installing the drivers manually, but it says that they are already installed (as they should on kernel 6.8). So right now I'm at a loss. In my pve node, I also get the mismatched version 13.4 when it expects 13. I tried the GUCFIRMWARE_MINOR=13 fix, but it didn't change anything for me. I'm still seeing the error. Any recommendations on what to try next or if you know a fix would be greatly appreciated.

Thank you

I am having the exact same issue and it is driving me absolutely crazy.

@zackbcom
Copy link

zackbcom commented Oct 11, 2024

Hi,

Did anybody manage to get it working on a linux VM? I followed the instructions right now, it works for Windows vms as well as unprivileged LXCs, but I can't get it to work for Linux VMs (I tried Mint and Manjaro). I keep on getting this error:

[ 4.729149] i915 0000:01:00.0: [drm] *ERROR* Device is non-operational; MMIO access returns 0xFFFFFFFF! [ 4.729539] i915 0000:01:00.0: Device initialization failed (-5) [ 4.729542] i915 0000:01:00.0: Please file a bug on drm/i915; see https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html for details. [ 4.729544] i915: probe of 0000:01:00.0 failed with error -5 [ 4.847984] xe 0000:01:00.0: Your graphics device 4680 is not officially supported by xe driver in this kernel version. To force Xe probe, use xe.force_probe='4680' and i915.force_probe='!4680' module parameters or CONFIG_DRM_XE_FORCE_PROBE='4680' and CONFIG_DRM_I915_FORCE_PROBE='!4680' configuration options.

The Linux VM see the Alder Lake iGPU, but the intel drivers won't load. I tried installing the drivers manually, but it says that they are already installed (as they should on kernel 6.8). So right now I'm at a loss. In my pve node, I also get the mismatched version 13.4 when it expects 13. I tried the GUCFIRMWARE_MINOR=13 fix, but it didn't change anything for me. I'm still seeing the error. Any recommendations on what to try next or if you know a fix would be greatly appreciated.

Thank you

View this Issue for a MR/branch that works.

strongtz/i915-sriov-dkms#198 (comment)

Try PR #207 based on the 6.6 branch.

@itachi737
Copy link

@zackbcom Thank you. I'll look into it.

@ayham87
Copy link

ayham87 commented Oct 20, 2024

After reviewing the awesome tips from Derek Seaman's blog, strongtz open issue and here in this gist, I 've managed to connect the dots and the drivers seems working for Intel Alder lake in Proxmox with kernel 6.8.12-2-pve and Ubuntu 24.04 vm with kernel 6.8.0-41.

Host approach:

apt update && apt install git sysfsutils pve-headers intel-gpu-tools mokutil -y
rm -rf /usr/src/i915-sriov-dkms-*
rm -rf /var/lib/dkms/i915-sriov-dkms
find /lib/modules -regex ".*/updates/dkms/i915.ko" -delete
mkdir -p /lib/firmware/i915
mkdir firmware && cd firmware
wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
mv *.bin /lib/firmware/i915/
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
apt install build-* dkms
cd ~/i915-sriov-dkms
dkms add .
GUCFIRMWARE_MINOR=13 dkms install -m i915-sriov-dkms -v $(cat VERSION) -k $(uname -r) --force --kernelsourcedir /usr/src/linux-headers-$(uname -r)
dkms status

mokutil --import /var/lib/dkms/mok.pub for performing MOK management if the secure boot is on

nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quite intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"
update-grub
update-initramfs -u -k all
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
cat /etc/sysfs.conf

reboot

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.1 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.2 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.3 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.4 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.5 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.6 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.7 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
dmesg | grep i915
[    3.642340] i915: module verification failed: signature and/or required key missing - tainting kernel
[    3.875949] i915 0000:00:02.0: Running in SR-IOV PF mode
[    3.876595] i915 0000:00:02.0: [drm] VT-d active for gfx access
[    3.876619] i915 0000:00:02.0: vgaarb: deactivate vga console
[    3.876667] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[    3.877066] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    3.881630] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[    3.889557] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.29.2
[    3.889564] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[    3.903698] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads!
[    3.904215] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[    3.904217] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[    3.904640] i915 0000:00:02.0: [drm] GuC RC: enabled
[    3.905262] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    3.943958] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
[    3.945257] i915 0000:00:02.0: 7 VFs could be associated with this PF
[    3.947614] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.947757] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    3.947972] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.948084] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    4.578191] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.578253] i915 0000:00:02.1: enabling device (0000 -> 0002)
[    4.578267] i915 0000:00:02.1: Running in SR-IOV VF mode
[    4.578773] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.13.4
[    4.580464] i915 0000:00:02.1: [drm] VT-d active for gfx access
[    4.580479] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[    4.580819] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.13.4
[    4.581483] i915 0000:00:02.1: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.581484] i915 0000:00:02.1: HuC firmware PRELOADED
[    4.583933] i915 0000:00:02.1: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.583937] i915 0000:00:02.1: [drm] PMU not supported for this GPU.
[    4.584099] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.1 on minor 1
[    4.584242] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.584245] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.584270] i915 0000:00:02.2: enabling device (0000 -> 0002)
[    4.584276] i915 0000:00:02.2: Running in SR-IOV VF mode
[    4.584686] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.13.4
[    4.586117] i915 0000:00:02.2: [drm] VT-d active for gfx access
[    4.586127] i915 0000:00:02.2: [drm] Using Transparent Hugepages
[    4.586409] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.13.4
[    4.587391] i915 0000:00:02.2: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.587411] i915 0000:00:02.2: HuC firmware PRELOADED
[    4.590636] i915 0000:00:02.2: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.590664] i915 0000:00:02.2: [drm] PMU not supported for this GPU.
[    4.590701] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.2 on minor 2
[    4.590840] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.590844] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.590847] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.590876] i915 0000:00:02.3: enabling device (0000 -> 0002)
[    4.590882] i915 0000:00:02.3: Running in SR-IOV VF mode
[    4.591046] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.13.4
[    4.591508] i915 0000:00:02.3: [drm] VT-d active for gfx access
[    4.591518] i915 0000:00:02.3: [drm] Using Transparent Hugepages
[    4.591767] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.13.4
[    4.592338] i915 0000:00:02.3: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.592340] i915 0000:00:02.3: HuC firmware PRELOADED
[    4.594279] i915 0000:00:02.3: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.594282] i915 0000:00:02.3: [drm] PMU not supported for this GPU.
[    4.594318] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.3 on minor 3
[    4.594446] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.594449] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.594452] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.594455] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.594479] i915 0000:00:02.4: enabling device (0000 -> 0002)
[    4.594485] i915 0000:00:02.4: Running in SR-IOV VF mode
[    4.594642] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.13.4
[    4.595274] i915 0000:00:02.4: [drm] VT-d active for gfx access
[    4.595280] i915 0000:00:02.4: [drm] Using Transparent Hugepages
[    4.595526] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.13.4
[    4.596059] i915 0000:00:02.4: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.596060] i915 0000:00:02.4: HuC firmware PRELOADED
[    4.597551] i915 0000:00:02.4: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.597554] i915 0000:00:02.4: [drm] PMU not supported for this GPU.
[    4.597588] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.4 on minor 4
[    4.597717] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.597720] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.597723] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.597727] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.597730] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.597757] i915 0000:00:02.5: enabling device (0000 -> 0002)
[    4.597762] i915 0000:00:02.5: Running in SR-IOV VF mode
[    4.598025] i915 0000:00:02.5: [drm] GT0: GUC: interface version 0.1.13.4
[    4.598238] i915 0000:00:02.5: [drm] VT-d active for gfx access
[    4.598245] i915 0000:00:02.5: [drm] Using Transparent Hugepages
[    4.598487] i915 0000:00:02.5: [drm] GT0: GUC: interface version 0.1.13.4
[    4.598802] i915 0000:00:02.5: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.598804] i915 0000:00:02.5: HuC firmware PRELOADED
[    4.600255] i915 0000:00:02.5: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.600258] i915 0000:00:02.5: [drm] PMU not supported for this GPU.
[    4.600288] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.5 on minor 5
[    4.600417] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.600421] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600424] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600428] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600431] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600434] i915 0000:00:02.5: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.600462] i915 0000:00:02.6: enabling device (0000 -> 0002)
[    4.600468] i915 0000:00:02.6: Running in SR-IOV VF mode
[    4.600615] i915 0000:00:02.6: [drm] GT0: GUC: interface version 0.1.13.4
[    4.600828] i915 0000:00:02.6: [drm] VT-d active for gfx access
[    4.600836] i915 0000:00:02.6: [drm] Using Transparent Hugepages
[    4.601092] i915 0000:00:02.6: [drm] GT0: GUC: interface version 0.1.13.4
[    4.601415] i915 0000:00:02.6: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.601417] i915 0000:00:02.6: HuC firmware PRELOADED
[    4.602936] i915 0000:00:02.6: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.602939] i915 0000:00:02.6: [drm] PMU not supported for this GPU.
[    4.602977] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.6 on minor 6
[    4.603112] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.603116] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603119] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603122] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603125] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603129] i915 0000:00:02.5: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603132] i915 0000:00:02.6: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.603157] i915 0000:00:02.7: enabling device (0000 -> 0002)
[    4.603162] i915 0000:00:02.7: Running in SR-IOV VF mode
[    4.603327] i915 0000:00:02.7: [drm] GT0: GUC: interface version 0.1.13.4
[    4.603540] i915 0000:00:02.7: [drm] VT-d active for gfx access
[    4.603548] i915 0000:00:02.7: [drm] Using Transparent Hugepages
[    4.603814] i915 0000:00:02.7: [drm] GT0: GUC: interface version 0.1.13.4
[    4.604149] i915 0000:00:02.7: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.604151] i915 0000:00:02.7: HuC firmware PRELOADED
[    4.605723] i915 0000:00:02.7: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.605726] i915 0000:00:02.7: [drm] PMU not supported for this GPU.
[    4.605776] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.7 on minor 7
[    4.605867] i915 0000:00:02.0: Enabled 7 VFs

intel_gpu_top -d drm:/dev/dri/renderD128 (for monitoring the iGPU)

Guest approach:

sudo apt install -y linux-headers-6.8.0-41-generic linux-headers-6.8.0-41 linux-image-6.8.0-41-generic linux-modules-6.8.0-41-generic linux-tools-6.8.0-41-generic linux-modules-extra-6.8.0-41-generic

sudo apt-mark hold linux-headers-6.8.0-41-generic linux-headers-6.8.0-41 linux-image-6.8.0-41-generic linux-modules-6.8.0-41-generic linux-tools-6.8.0-41-generic linux-modules-extra-6.8.0-41-generic

sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quite intel_iommu=on iommu=pt i915.enable_guc=3"
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-41-generic"

sudo update-grub
sudo update-initramfs -u

sudo reboot
sudo apt purge -y linux-headers-6.8.0-47-generic linux-headers-6.8.0-47 linux-image-6.8.0-47-generic linux-modules-6.8.0-47-generic linux-tools-6.8.0-47-generic linux-modules-extra-6.8.0-47-generic linux-generic-hwe-24.04 linux-headers-generic-hwe-24.04 linux-image-generic-hwe-24.04
sudo mv /usr/bin/linux-check-removal /usr/bin/linux-check-removal.orig
echo -e '#!/bin/sh\necho "Overriding default linux-check-removal script!"\nexit 0' | sudo tee /usr/bin/linux-check-removal
sudo chmod +x /usr/bin/linux-check-removal
echo "options i915 force_probe=7d55 enable_guc=3" | sudo tee -a /etc/modprobe.d/i915.conf
sudo mkdir -p /lib/firmware/i915
mkdir firmware && cd firmware
wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
sudo mv *.bin /lib/firmware/i915/
sudo reboot

The vm was set on OVMF (UEFI) bios and can be headless accessed so I changed the display temporary to VirGL in order to enroll MOK while booting after installing the dkms

sudo apt install mesa-utils build-* dkms -y
git clone https://github.com/strongtz/i915-sriov-dkms
cd i915-sriov-dkms && sudo dkms add .
sudo GUCFIRMWARE_MINOR=13 dkms install -m i915-sriov-dkms -v $(cat VERSION) -k $(uname -r) --force --kernelsourcedir /usr/src/linux-headers-$(uname -r)
sudo update-initramfs -u
sudo reboot

Installing Client GPUs driver on Ubuntu Desktop 24.04 LTS can be found Here

I made the vm headless again in the host and the results should be like:

lspci | grep VGA
01:00.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
lspci -vs 01:00.0
01:00.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c) (prog-if 00 [VGA controller])
	Subsystem: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics]
	Physical Slot: 0
	Flags: bus master, fast devsel, latency 0, IRQ 40
	Memory at 80000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 380000000000 (64-bit, prefetchable) [size=512M]
	Capabilities: <access denied>
	Kernel driver in use: i915
	Kernel modules: xe, i915
sudo dmesg | grep "i915 0000:01:00.0"
[    2.930749] i915 0000:01:00.0: Running in SR-IOV VF mode
[    2.931249] i915 0000:01:00.0: [drm] GT0: GUC: interface version 0.1.13.4
[    2.932878] i915 0000:01:00.0: vgaarb: deactivate vga console
[    2.932895] i915 0000:01:00.0: [drm] Using Transparent Hugepages
[    2.934183] i915 0000:01:00.0: [drm] GT0: GUC: interface version 0.1.13.4
[    2.934887] i915 0000:01:00.0: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    2.934889] i915 0000:01:00.0: HuC firmware PRELOADED
[    2.937869] i915 0000:01:00.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    2.937875] i915 0000:01:00.0: [drm] PMU not supported for this GPU.
glxinfo | grep "direct rendering"
direct rendering: Yes
glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)
ls /dev/dri/render*
/dev/dri/renderD128

@mangeria
Copy link

This guide seems to work on Proxmox 8.2.7 and 6.8.12-2-pve kernel, however does anyone know how to get signal out of HDMI for Windows 11 VM Guest (Atlas OS)? Ideally I'd like to have one of my two HDMI outs output Win 11 VM and the second Proxmox host. Is this possible?

@massimilianorighi
Copy link

After reviewing the awesome tips from Derek Seaman's blog, strongtz open issue and here in this gist, I 've managed to connect the dots and the drivers seems working for Intel Alder lake in Proxmox with kernel 6.8.12-2-pve and Ubuntu 24.04 vm with kernel 6.8.0-41.

Host approach:

apt update && apt install git sysfsutils pve-headers intel-gpu-tools mokutil -y
rm -rf /usr/src/i915-sriov-dkms-*
rm -rf /var/lib/dkms/i915-sriov-dkms
find /lib/modules -regex ".*/updates/dkms/i915.ko" -delete
mkdir -p /lib/firmware/i915
mkdir firmware && cd firmware
wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
sudo mv *.bin /lib/firmware/i915/
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
apt install build-* dkms
cd ~/i915-sriov-dkms
dkms add .
GUCFIRMWARE_MINOR=13 dkms install -m i915-sriov-dkms -v $(cat VERSION) -k $(uname -r) --force --kernelsourcedir /usr/src/linux-headers-$(uname -r)
dkms status

mokutil --import /var/lib/dkms/mok.pub for performing MOK management if the secure boot is on

nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quite intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"
update-grub
update-initramfs -u -k all
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
cat /etc/sysfs.conf

reboot

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.1 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.2 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.3 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.4 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.5 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.6 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
00:02.7 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
dmesg | grep i915
[    3.642340] i915: module verification failed: signature and/or required key missing - tainting kernel
[    3.875949] i915 0000:00:02.0: Running in SR-IOV PF mode
[    3.876595] i915 0000:00:02.0: [drm] VT-d active for gfx access
[    3.876619] i915 0000:00:02.0: vgaarb: deactivate vga console
[    3.876667] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[    3.877066] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    3.881630] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[    3.889557] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.29.2
[    3.889564] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[    3.903698] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads!
[    3.904215] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[    3.904217] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[    3.904640] i915 0000:00:02.0: [drm] GuC RC: enabled
[    3.905262] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    3.943958] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
[    3.945257] i915 0000:00:02.0: 7 VFs could be associated with this PF
[    3.947614] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.947757] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    3.947972] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.948084] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    4.578191] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.578253] i915 0000:00:02.1: enabling device (0000 -> 0002)
[    4.578267] i915 0000:00:02.1: Running in SR-IOV VF mode
[    4.578773] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.13.4
[    4.580464] i915 0000:00:02.1: [drm] VT-d active for gfx access
[    4.580479] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[    4.580819] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.13.4
[    4.581483] i915 0000:00:02.1: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.581484] i915 0000:00:02.1: HuC firmware PRELOADED
[    4.583933] i915 0000:00:02.1: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.583937] i915 0000:00:02.1: [drm] PMU not supported for this GPU.
[    4.584099] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.1 on minor 1
[    4.584242] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.584245] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.584270] i915 0000:00:02.2: enabling device (0000 -> 0002)
[    4.584276] i915 0000:00:02.2: Running in SR-IOV VF mode
[    4.584686] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.13.4
[    4.586117] i915 0000:00:02.2: [drm] VT-d active for gfx access
[    4.586127] i915 0000:00:02.2: [drm] Using Transparent Hugepages
[    4.586409] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.13.4
[    4.587391] i915 0000:00:02.2: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.587411] i915 0000:00:02.2: HuC firmware PRELOADED
[    4.590636] i915 0000:00:02.2: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.590664] i915 0000:00:02.2: [drm] PMU not supported for this GPU.
[    4.590701] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.2 on minor 2
[    4.590840] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.590844] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.590847] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.590876] i915 0000:00:02.3: enabling device (0000 -> 0002)
[    4.590882] i915 0000:00:02.3: Running in SR-IOV VF mode
[    4.591046] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.13.4
[    4.591508] i915 0000:00:02.3: [drm] VT-d active for gfx access
[    4.591518] i915 0000:00:02.3: [drm] Using Transparent Hugepages
[    4.591767] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.13.4
[    4.592338] i915 0000:00:02.3: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.592340] i915 0000:00:02.3: HuC firmware PRELOADED
[    4.594279] i915 0000:00:02.3: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.594282] i915 0000:00:02.3: [drm] PMU not supported for this GPU.
[    4.594318] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.3 on minor 3
[    4.594446] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.594449] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.594452] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.594455] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.594479] i915 0000:00:02.4: enabling device (0000 -> 0002)
[    4.594485] i915 0000:00:02.4: Running in SR-IOV VF mode
[    4.594642] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.13.4
[    4.595274] i915 0000:00:02.4: [drm] VT-d active for gfx access
[    4.595280] i915 0000:00:02.4: [drm] Using Transparent Hugepages
[    4.595526] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.13.4
[    4.596059] i915 0000:00:02.4: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.596060] i915 0000:00:02.4: HuC firmware PRELOADED
[    4.597551] i915 0000:00:02.4: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.597554] i915 0000:00:02.4: [drm] PMU not supported for this GPU.
[    4.597588] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.4 on minor 4
[    4.597717] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.597720] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.597723] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.597727] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.597730] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.597757] i915 0000:00:02.5: enabling device (0000 -> 0002)
[    4.597762] i915 0000:00:02.5: Running in SR-IOV VF mode
[    4.598025] i915 0000:00:02.5: [drm] GT0: GUC: interface version 0.1.13.4
[    4.598238] i915 0000:00:02.5: [drm] VT-d active for gfx access
[    4.598245] i915 0000:00:02.5: [drm] Using Transparent Hugepages
[    4.598487] i915 0000:00:02.5: [drm] GT0: GUC: interface version 0.1.13.4
[    4.598802] i915 0000:00:02.5: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.598804] i915 0000:00:02.5: HuC firmware PRELOADED
[    4.600255] i915 0000:00:02.5: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.600258] i915 0000:00:02.5: [drm] PMU not supported for this GPU.
[    4.600288] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.5 on minor 5
[    4.600417] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.600421] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600424] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600428] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600431] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.600434] i915 0000:00:02.5: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.600462] i915 0000:00:02.6: enabling device (0000 -> 0002)
[    4.600468] i915 0000:00:02.6: Running in SR-IOV VF mode
[    4.600615] i915 0000:00:02.6: [drm] GT0: GUC: interface version 0.1.13.4
[    4.600828] i915 0000:00:02.6: [drm] VT-d active for gfx access
[    4.600836] i915 0000:00:02.6: [drm] Using Transparent Hugepages
[    4.601092] i915 0000:00:02.6: [drm] GT0: GUC: interface version 0.1.13.4
[    4.601415] i915 0000:00:02.6: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.601417] i915 0000:00:02.6: HuC firmware PRELOADED
[    4.602936] i915 0000:00:02.6: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.602939] i915 0000:00:02.6: [drm] PMU not supported for this GPU.
[    4.602977] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.6 on minor 6
[    4.603112] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[    4.603116] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603119] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603122] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603125] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603129] i915 0000:00:02.5: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[    4.603132] i915 0000:00:02.6: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
               use xe.force_probe='46a6' and i915.force_probe='!46a6'
[    4.603157] i915 0000:00:02.7: enabling device (0000 -> 0002)
[    4.603162] i915 0000:00:02.7: Running in SR-IOV VF mode
[    4.603327] i915 0000:00:02.7: [drm] GT0: GUC: interface version 0.1.13.4
[    4.603540] i915 0000:00:02.7: [drm] VT-d active for gfx access
[    4.603548] i915 0000:00:02.7: [drm] Using Transparent Hugepages
[    4.603814] i915 0000:00:02.7: [drm] GT0: GUC: interface version 0.1.13.4
[    4.604149] i915 0000:00:02.7: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    4.604151] i915 0000:00:02.7: HuC firmware PRELOADED
[    4.605723] i915 0000:00:02.7: [drm] Protected Xe Path (PXP) protected content support initialized
[    4.605726] i915 0000:00:02.7: [drm] PMU not supported for this GPU.
[    4.605776] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.7 on minor 7
[    4.605867] i915 0000:00:02.0: Enabled 7 VFs

intel_gpu_top -d drm:/dev/dri/renderD128 (for monitoring the iGPU)

Guest approach:

sudo apt install -y linux-headers-6.8.0-41-generic linux-headers-6.8.0-41 linux-image-6.8.0-41-generic linux-modules-6.8.0-41-generic linux-tools-6.8.0-41-generic linux-modules-extra-6.8.0-41-generic

sudo apt-mark hold linux-headers-6.8.0-41-generic linux-headers-6.8.0-41 linux-image-6.8.0-41-generic linux-modules-6.8.0-41-generic linux-tools-6.8.0-41-generic linux-modules-extra-6.8.0-41-generic

sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quite intel_iommu=on iommu=pt i915.enable_guc=3"
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-41-generic"

sudo update-grub
sudo update-initramfs -u

sudo reboot
sudo apt purge -y linux-headers-6.8.0-47-generic linux-headers-6.8.0-47 linux-image-6.8.0-47-generic linux-modules-6.8.0-47-generic linux-tools-6.8.0-47-generic linux-modules-extra-6.8.0-47-generic linux-generic-hwe-24.04 linux-headers-generic-hwe-24.04 linux-image-generic-hwe-24.04
sudo mv /usr/bin/linux-check-removal /usr/bin/linux-check-removal.orig
echo -e '#!/bin/sh\necho "Overriding default linux-check-removal script!"\nexit 0' | sudo tee /usr/bin/linux-check-removal
sudo chmod +x /usr/bin/linux-check-removal
echo "options i915 force_probe=7d55 enable_guc=3" | sudo tee -a /etc/modprobe.d/i915.conf
sudo mkdir -p /lib/firmware/i915
mkdir firmware && cd firmware
wget -r -nd -e robots=no -A '*.bin' --accept-regex '/plain/' https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/
sudo mv *.bin /lib/firmware/i915/
sudo reboot

The vm was set on OVMF (UEFI) bios and can be headless accessed so I changed the display temporary to VirGL in order to enroll MOK while booting after installing the dkms

sudo apt install mesa-utils build-* dkms -y
git clone https://github.com/strongtz/i915-sriov-dkms
cd i915-sriov-dkms && sudo dkms add .
sudo GUCFIRMWARE_MINOR=13 dkms install -m i915-sriov-dkms -v $(cat VERSION) -k $(uname -r) --force --kernelsourcedir /usr/src/linux-headers-$(uname -r)
sudo update-initramfs -u
sudo reboot

Installing Client GPUs driver on Ubuntu Desktop 24.04 LTS can be found Here

I made the vm headless again in the host and the results should be like:

lspci | grep VGA
01:00.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
lspci -vs 01:00.0
01:00.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c) (prog-if 00 [VGA controller])
	Subsystem: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics]
	Physical Slot: 0
	Flags: bus master, fast devsel, latency 0, IRQ 40
	Memory at 80000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 380000000000 (64-bit, prefetchable) [size=512M]
	Capabilities: <access denied>
	Kernel driver in use: i915
	Kernel modules: xe, i915
sudo dmesg | grep "i915 0000:01:00.0"
[    2.930749] i915 0000:01:00.0: Running in SR-IOV VF mode
[    2.931249] i915 0000:01:00.0: [drm] GT0: GUC: interface version 0.1.13.4
[    2.932878] i915 0000:01:00.0: vgaarb: deactivate vga console
[    2.932895] i915 0000:01:00.0: [drm] Using Transparent Hugepages
[    2.934183] i915 0000:01:00.0: [drm] GT0: GUC: interface version 0.1.13.4
[    2.934887] i915 0000:01:00.0: GuC firmware PRELOADED version 1.13 submission:SR-IOV VF
[    2.934889] i915 0000:01:00.0: HuC firmware PRELOADED
[    2.937869] i915 0000:01:00.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    2.937875] i915 0000:01:00.0: [drm] PMU not supported for this GPU.
glxinfo | grep "direct rendering"
direct rendering: Yes
glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)
ls /dev/dri/render*
/dev/dri/renderD128

Thank you so much! It works on my Intel 12th Asus NUC i3-1220P

@sacredx72
Copy link

Good evening, I tried to install it according to your instructions, and according to instructions from other sources. Always unsuccessful
namely Chinese motherboard Genuine Intel(R) 0000 Intel I7 1280P Linux 6.8.12-4-pve

[ 0.000000] Command line: initrd=\EFI\proxmox\6.8.12-4-pve\initrd.img-6.8.12-4-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on pcie_aspm=force pcie_aspm.policy=powersave iommu=pt i915.enable_guc=3 i915.max_vfs=7
[ 0.074447] Kernel command line: initrd=\EFI\proxmox\6.8.12-4-pve\initrd.img-6.8.12-4-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on pcie_aspm=force pcie_aspm.policy=powersave iommu=pt i915.enable_guc=3 i915.max_vfs=7
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 15.571358] i915: module verification failed: signature and/or required key missing - tainting kernel
[ 15.826672] i915 0000:00:02.0: Running in SR-IOV PF mode
[ 15.828662] i915 0000:00:02.0: [drm] VT-d active for gfx access
[ 15.872298] i915 0000:00:02.0: vgaarb: deactivate vga console
[ 15.872360] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[ 15.872894] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
[ 15.877056] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[ 15.882807] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.36.0
[ 15.882820] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[ 15.885476] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads!
[ 15.886184] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[ 15.886185] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[ 15.886683] i915 0000:00:02.0: [drm] GuC RC: enabled
[ 15.886723] i915 0000:00:02.0: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 15.886725] i915 0000:00:02.0: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 15.887624] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[ 15.959354] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 1
[ 15.963590] i915 0000:00:02.0: 7 VFs could be associated with this PF
[ 15.991418] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 15.993086] fbcon: i915drmfb (fb0) is primary device
[ 16.066974] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[ 21.431359] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.434302] i915 0000:00:02.1: enabling device (0000 -> 0002)
[ 21.434769] i915 0000:00:02.1: Running in SR-IOV VF mode
[ 21.436025] i915 0000:00:02.1: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.436598] i915 0000:00:02.1: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.440324] i915 0000:00:02.1: [drm] VT-d active for gfx access
[ 21.441278] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[ 21.442360] i915 0000:00:02.1: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.443083] i915 0000:00:02.1: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.444534] i915 0000:00:02.1: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.445025] i915 0000:00:02.1: HuC firmware PRELOADED
[ 21.447072] i915 0000:00:02.1: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.447485] i915 0000:00:02.1: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.453971] i915 0000:00:02.1: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.454403] i915 0000:00:02.1: [drm] PMU not supported for this GPU.
[ 21.455111] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.1 on minor 0
[ 21.458480] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[ 21.459023] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.462146] i915 0000:00:02.2: enabling device (0000 -> 0002)
[ 21.462606] i915 0000:00:02.2: Running in SR-IOV VF mode
[ 21.463879] i915 0000:00:02.2: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.464359] i915 0000:00:02.2: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.465440] i915 0000:00:02.2: [drm] VT-d active for gfx access
[ 21.466014] i915 0000:00:02.2: [drm] Using Transparent Hugepages
[ 21.467316] i915 0000:00:02.2: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.468136] i915 0000:00:02.2: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.469423] i915 0000:00:02.2: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.470009] i915 0000:00:02.2: HuC firmware PRELOADED
[ 21.471049] i915 0000:00:02.2: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.471771] i915 0000:00:02.2: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.475423] i915 0000:00:02.2: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.476318] i915 0000:00:02.2: [drm] PMU not supported for this GPU.
[ 21.477589] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.2 on minor 2
[ 21.483440] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[ 21.484472] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.485156] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.488292] i915 0000:00:02.3: enabling device (0000 -> 0002)
[ 21.488981] i915 0000:00:02.3: Running in SR-IOV VF mode
[ 21.489958] i915 0000:00:02.3: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.490858] i915 0000:00:02.3: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.492622] i915 0000:00:02.3: [drm] VT-d active for gfx access
[ 21.493463] i915 0000:00:02.3: [drm] Using Transparent Hugepages
[ 21.495058] i915 0000:00:02.3: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.495953] i915 0000:00:02.3: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.497082] i915 0000:00:02.3: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.497979] i915 0000:00:02.3: HuC firmware PRELOADED
[ 21.498856] i915 0000:00:02.3: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.499293] i915 0000:00:02.3: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.502275] i915 0000:00:02.3: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.502732] i915 0000:00:02.3: [drm] PMU not supported for this GPU.
[ 21.503442] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.3 on minor 3
[ 21.506618] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[ 21.507105] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.507595] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.508145] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.511176] i915 0000:00:02.4: enabling device (0000 -> 0002)
[ 21.511769] i915 0000:00:02.4: Running in SR-IOV VF mode
[ 21.512961] i915 0000:00:02.4: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.513428] i915 0000:00:02.4: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.514551] i915 0000:00:02.4: [drm] VT-d active for gfx access
[ 21.515135] i915 0000:00:02.4: [drm] Using Transparent Hugepages
[ 21.516644] i915 0000:00:02.4: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.517597] i915 0000:00:02.4: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.518549] i915 0000:00:02.4: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.519070] i915 0000:00:02.4: HuC firmware PRELOADED
[ 21.519947] i915 0000:00:02.4: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.520412] i915 0000:00:02.4: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.523357] i915 0000:00:02.4: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.523797] i915 0000:00:02.4: [drm] PMU not supported for this GPU.
[ 21.524509] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.4 on minor 4
[ 21.527587] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[ 21.528058] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.528541] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.529036] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.529508] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.532458] i915 0000:00:02.5: enabling device (0000 -> 0002)
[ 21.532983] i915 0000:00:02.5: Running in SR-IOV VF mode
[ 21.534034] i915 0000:00:02.5: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.534499] i915 0000:00:02.5: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.535795] i915 0000:00:02.5: [drm] VT-d active for gfx access
[ 21.536429] i915 0000:00:02.5: [drm] Using Transparent Hugepages
[ 21.537452] i915 0000:00:02.5: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.538200] i915 0000:00:02.5: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.539937] i915 0000:00:02.5: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.540616] i915 0000:00:02.5: HuC firmware PRELOADED
[ 21.541896] i915 0000:00:02.5: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.542605] i915 0000:00:02.5: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.546188] i915 0000:00:02.5: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.546621] i915 0000:00:02.5: [drm] PMU not supported for this GPU.
[ 21.547299] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.5 on minor 5
[ 21.550414] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[ 21.550848] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.551335] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.551874] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.552346] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.552807] i915 0000:00:02.5: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.555652] i915 0000:00:02.6: enabling device (0000 -> 0002)
[ 21.556197] i915 0000:00:02.6: Running in SR-IOV VF mode
[ 21.557434] i915 0000:00:02.6: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.558389] i915 0000:00:02.6: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.559744] i915 0000:00:02.6: [drm] VT-d active for gfx access
[ 21.560546] i915 0000:00:02.6: [drm] Using Transparent Hugepages
[ 21.561489] i915 0000:00:02.6: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.563133] i915 0000:00:02.6: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.564994] i915 0000:00:02.6: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.566032] i915 0000:00:02.6: HuC firmware PRELOADED
[ 21.567254] i915 0000:00:02.6: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.567999] i915 0000:00:02.6: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.572535] i915 0000:00:02.6: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.573272] i915 0000:00:02.6: [drm] PMU not supported for this GPU.
[ 21.574373] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.6 on minor 6
[ 21.579811] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[ 21.580705] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.581579] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.582364] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.583164] i915 0000:00:02.4: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.584043] i915 0000:00:02.5: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[ 21.584976] i915 0000:00:02.6: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.589995] i915 0000:00:02.7: enabling device (0000 -> 0002)
[ 21.590715] i915 0000:00:02.7: Running in SR-IOV VF mode
[ 21.592266] i915 0000:00:02.7: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.593201] i915 0000:00:02.7: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.594965] i915 0000:00:02.7: [drm] VT-d active for gfx access
[ 21.595811] i915 0000:00:02.7: [drm] Using Transparent Hugepages
[ 21.597182] i915 0000:00:02.7: [drm] ERROR GT0: IOV: Unable to confirm version 1.17 (0000000000000000)
[ 21.598388] i915 0000:00:02.7: [drm] ERROR GT0: IOV: Found interface version 0.1.17.0
[ 21.599744] i915 0000:00:02.7: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.600695] i915 0000:00:02.7: HuC firmware PRELOADED
[ 21.601988] i915 0000:00:02.7: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.602794] i915 0000:00:02.7: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 21.606583] i915 0000:00:02.7: [drm] Protected Xe Path (PXP) protected content support initialized
[ 21.607064] i915 0000:00:02.7: [drm] PMU not supported for this GPU.
[ 21.608014] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.7 on minor 7
[ 21.609124] i915 0000:00:02.0: Enabled 7 VFs

Constant error
[ 15.886723] i915 0000:00:02.0: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 15.886725] i915 0000:00:02.0: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT

@scyto
Copy link
Author

scyto commented Dec 1, 2024 via email

@sacredx72
Copy link

@scyto Good evening, yes I saw this message, and everything works for him, but for me it doesn't, I checked, in Windows there is error 43 and there is no load on the GPU =(
I think this is also connected with the fact that in his log at least "GuC firmware PRELOADED version 1.13 submission:SR-IOV VF" appears, but for me no version loads, namely " [ 21.564994] i915 0000:00:02.6: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.566032] i915 0000:00:02.6: HuC firmware PRELOADED
[ 21.567254] i915 0000:00:02.6: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 21.567999] i915 0000:00:02.6: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT"

@ayham87
Copy link

ayham87 commented Dec 2, 2024

Hello @sacredx72

You could check what probe your iGPU has, in my case is 46a6 and yours maybe 46a0

lspci -nn |grep VGA' 00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:46a6] (rev 0c)

One you do that you could add i915.force_probe=46a0 to GRUB_CMDLINE_LINUX_DEFAULT

I am not sure if you are using ZFS, maybe it could be related issue.

dmesg | grep i915
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.8.12-4-pve root=/dev/mapper/pve-root ro quite intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7 i915.force_probe=46a6
[    0.097313] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.8.12-4-pve root=/dev/mapper/pve-root ro quite intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7 i915.force_probe=46a6
               use xe.force_probe='46a6' and i915.force_probe='!46a6'

@sacredx72
Copy link

@ayham87
good morning, yes, I use ZFS and the device and device "46a0", now, after your comment, I tried to force it to be registered in the kernel
root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on pcie_aspm=force pcie_aspm.policy=powersave iommu=pt i915.enable_guc=3 i915.max_vfs=7 i915.force_probe='!46a0' xe.force_probe='46a0'

[ 0.000000] Command line: initrd=\EFI\proxmox\6.8.12-4-pve\initrd.img-6.8.12-4-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on pcie_aspm=force pcie_aspm.policy=powersave iommu=pt i915.enable_guc=3 i915.max_vfs=7 i915.force_probe='!46a0' xe.force_probe='46a0'
[ 0.073248] Kernel command line: initrd=\EFI\proxmox\6.8.12-4-pve\initrd.img-6.8.12-4-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on pcie_aspm=force pcie_aspm.policy=powersave iommu=pt i915.enable_guc=3 i915.max_vfs=7 i915.force_probe='!46a0' xe.force_probe='46a0'
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 15.860883] i915: module verification failed: signature and/or required key missing - tainting kernel
[ 16.144844] i915 0000:00:02.0: Running in SR-IOV PF mode
[ 16.249096] i915 0000:00:02.0: [drm] VT-d active for gfx access
[ 16.265956] i915 0000:00:02.0: vgaarb: deactivate vga console
[ 16.266032] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[ 16.266576] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
[ 16.271122] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[ 16.276238] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.36.0
[ 16.276243] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[ 16.278643] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[ 16.279410] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[ 16.279412] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[ 16.279946] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled
[ 16.280124] i915 0000:00:02.0: [drm] ERROR GT0: GUC: mmio request 0x4100: failure 201/0
[ 16.280126] i915 0000:00:02.0: [drm] ERROR GT0: Failed to retrieve hwconfig table: -ENOENT
[ 16.282444] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[ 16.314495] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 1
[ 16.316216] i915 display info: display version: 13
[ 16.316219] i915 display info: cursor_needs_physical: no
[ 16.316219] i915 display info: has_cdclk_crawl: yes
[ 16.316220] i915 display info: has_cdclk_squash: no
[ 16.316221] i915 display info: has_ddi: yes
[ 16.316221] i915 display info: has_dp_mst: yes
[ 16.316222] i915 display info: has_dsb: yes
[ 16.316222] i915 display info: has_fpga_dbg: yes
[ 16.316223] i915 display info: has_gmch: no
[ 16.316223] i915 display info: has_hotplug: yes
[ 16.316224] i915 display info: has_hti: no
[ 16.316224] i915 display info: has_ipc: yes
[ 16.316225] i915 display info: has_overlay: no
[ 16.316225] i915 display info: has_psr: yes
[ 16.316226] i915 display info: has_psr_hw_tracking: no
[ 16.316226] i915 display info: overlay_needs_physical: no
[ 16.316227] i915 display info: supports_tv: no
[ 16.316227] i915 display info: has_hdcp: yes
[ 16.316227] i915 display info: has_dmc: yes
[ 16.316228] i915 display info: has_dsc: yes
[ 16.316254] i915 0000:00:02.0: 7 VFs could be associated with this PF
[ 16.344092] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 16.346869] fbcon: i915drmfb (fb0) is primary device
[ 16.432755] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[ 21.414993] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
use xe.force_probe='46a0' and i915.force_probe='!46a0'
[ 21.418108] i915 0000:00:02.1: enabling device (0000 -> 0002)
[ 21.418574] i915 0000:00:02.1: Running in SR-IOV VF mode
[ 21.420234] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.17.0
[ 21.422876] i915 0000:00:02.1: [drm] VT-d active for gfx access
[ 21.423325] i915 0000:00:02.1: [drm] Using Transparent Hugepages
[ 21.424360] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.17.0
[ 21.425386] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.17.0
[ 21.427576] i915 0000:00:02.1: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[ 21.428113] i915 0000:00:02.1: HuC firmware PRELOADED

But the result is the same as above, and without specifying "i915.force_probe='!46a0' xe.force_probe='46a0" the system seems to have determined this itself if you look at the log in the previous message

@Nanorulez123
Copy link

I have this working on I3 12100 with Kernel 6.5.13-3 with Proxmox 8.2.2 - Works with containers, windows and linux VM's :).

Can anyone confirm if this kernel is still the latest supported and where to track progress?

@rjblake
Copy link

rjblake commented Dec 11, 2024

I have this working on I3 12100 with Kernel 6.5.13-3 with Proxmox 8.2.2 - Works with containers, windows and linux VM's :).

Can anyone confirm if this kernel is still the latest supported and where to track progress?

I have it working with Kernel 6.8.12-4-pve on Proxmox 8.3.1. I've only verified LXCs and Windows 11 VMs. Kernel 6.8.12-5-pve seems to be a problem (cannot compile module - although there appears to be a fix here). Latest issues can be found here

@Nanorulez123
Copy link

Nanorulez123 commented Dec 16, 2024

I have this working on I3 12100 with Kernel 6.5.13-3 with Proxmox 8.2.2 - Works with containers, windows and linux VM's :).
Can anyone confirm if this kernel is still the latest supported and where to track progress?

I have it working with Kernel 6.8.12-4-pve on Proxmox 8.3.1. I've only verified LXCs and Windows 11 VMs. Kernel 6.8.12-5-pve seems to be a problem (cannot compile module - although there appears to be a fix here). Latest issues can be found here

Thank you Kindly, I can confirm now working on 6.8.12-5 pve 8.3.1 working with the guide above with the fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment