Intel GPU Kernel Parameters
What the i915 GuC/HuC and IOMMU kernel parameters do, which Intel GPUs need them, and how to set them for media and passthrough hosts.
On this page
These kernel parameters come up on hosts that use an Intel integrated or Arc GPU for hardware video transcoding (Jellyfin, Plex, Frigate) or pass it through to virtual machines. Most are already the default on current kernels, so add only the ones your hardware needs.
| Parameter | What it does |
|---|---|
i915.enable_guc=3 | Loads the GuC firmware for GPU command submission (bit value 1) and the HuC firmware for media encoding (bit value 2). |
intel_iommu=on | Enables the Intel IOMMU (VT-d), required for PCI passthrough and SR-IOV. |
iommu=pt | Puts devices the host keeps for itself in passthrough mode, avoiding IOMMU translation overhead for them while VFIO devices stay isolated. |
Do You Need i915.enable_guc?
The i915 driver picks the right GuC/HuC mode for each GPU generation automatically (the default is -1, auto):
| Platform | Default | Notes |
|---|---|---|
| Gen9–Gen11 (Skylake through Ice Lake, Comet Lake) | 0 (off) | Set 2 to load HuC, which some low-power (VDEnc) encoding paths require. GuC submission isn't supported before Gen11. |
| Tiger Lake, Rocket Lake | 0 (off) | 3 or 2 enables HuC and, optionally, GuC submission. |
| Alder Lake-S desktop | 2 (HuC only) | |
| Alder Lake-P, Raptor Lake, Meteor Lake, DG2/Arc A-series | 3 | Already the default. Don't set it. |
| Lunar Lake, Battlemage (Arc B-series) and newer | n/a | Driven by the newer xe driver, which doesn't use this parameter. |
Note
enable_guc is marked unsafe in the driver, so setting it taints the kernel. That's harmless, but it shows up in bug reports. Install the firmware first: it ships in linux-firmware on Ubuntu and Debian (firmware-misc-nonfree on plain Debian).
i915.modeset=1 appears in older guides. It's the default, and the parameter is now deprecated (use nomodeset to disable modesetting instead), so leave it out.
Set the Parameters
Warning
A wrong kernel parameter can leave a machine without a display or unable to boot. Keep console or IPMI access available, and know how to edit the boot entry from the boot menu before you reboot.
GRUB (Ubuntu, Debian, Proxmox with GRUB)
Edit /etc/default/grub and append the parameters to GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3"Then apply and reboot:
update-grub
rebootProxmox with systemd-boot
Proxmox hosts installed on ZFS that boot in UEFI mode without Secure Boot use systemd-boot. Append the parameters to the single line in /etc/kernel/cmdline, then run:
proxmox-boot-tool refreshSee Proxmox Kernel Updates for how to tell which bootloader a host uses.
i915 Options Without Touching the Bootloader
Driver options can also go in a modprobe file, which applies when the module loads:
options i915 enable_guc=3Save it as /etc/modprobe.d/i915.conf, then run update-initramfs -u and reboot. IOMMU options must stay on the kernel command line.
NixOS
boot.kernelParams = [ "intel_iommu=on" "iommu=pt" "i915.enable_guc=3" ];Verify
After rebooting, check the command line and the driver's firmware status:
cat /proc/cmdline
dmesg | grep -i -E 'guc|huc'
dmesg | grep -i -E 'DMAR|IOMMU'Look for lines saying the GuC and HuC firmware loaded and HuC is authenticated, and for DMAR: IOMMU enabled. With intel-gpu-tools installed, intel_gpu_top shows the Video engine busy during a hardware transcode.
Sources
This article is in the public domain (CC0 1.0), code samples included. Use it however helps you.