The intel i915 driver does not load the GuC
and HuC
binary blobs automatically due to previous issues / security concerns with the binary blobs.
However, without loading these blobs, more of the processing is performed on the CPU.
I use a Dell XPS 9360 as my portable laptop, and its CPU isn’t aging well with only the dual core processors (plus HT). I use PoP! OS as my main linux OS on all of my machines, however this same process should work the same for Ubuntu and family.
1. Setup update-initramfs to include the binaries
Note that during the creation of these notes, the latest guc version was 9.39
. If when running these the version is newer, you just need to update the firmware version where documented and re-run the steps.
You can try and check what the latest version is by running the command :
sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status
Take note of what GuC firmware file is listed as the wanted version.
Create the script to include the guc firmware
Create /etc/initramfs-tools/hooks/i915_add_kbl_guc
and fill it with:
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
# Begin real processing below this line
copy_file firmware /lib/firmware/i915/kbl_guc_ver9_39.bin /lib/firmware/i915/kbl_guc_ver9_39.bin
exit 0
Make the file executable (chmod +x /etc/initramfs-tools/hooks/i915_add_kbl_guc
)
Rebuild the initramfs
After setting up the script, rebuild the initramfs to include the required firmware
sudo update-initramfs -k all -u
sudo update-grub
Setup the i915 module
Create the file /etc/modprobe.d/i915.conf
Set the following concents :
options i915 enable_fbc=1 enable_guc=3
This enables frame buffer compression (which generally works really well), and enables the GuC and HuC being loaded (3 is a bitmask 0b11).
Reboot
Reboot the device to restart the module and check it picks up the firmware.
Check
You can check the loading worked by reading these two files:
/sys/kernel/debug/dri/1/i915_guc_load_status
/sys/kernel/debug/dri/1/i915_huc_load_status
fetch
and load
fields should read SUCCESS
. If you got this right, enjoy that extra bit of diminishing returns in your integrated GPU performance!