Skip to content
Skip to the article
In Linux: 9 articles
Linux

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.

Updated
Applies to
  • Linux 6.x
  • Ubuntu 24.04
  • Proxmox VE 8
  • Proxmox VE 9
Tags
  • linux
  • kernel
  • intel
  • gpu
  • iommu
Reading time
3 min

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.

ParameterWhat it does
i915.enable_guc=3Loads the GuC firmware for GPU command submission (bit value 1) and the HuC firmware for media encoding (bit value 2).
intel_iommu=onEnables the Intel IOMMU (VT-d), required for PCI passthrough and SR-IOV.
iommu=ptPuts 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):

PlatformDefaultNotes
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 Lake0 (off)3 or 2 enables HuC and, optionally, GuC submission.
Alder Lake-S desktop2 (HuC only)
Alder Lake-P, Raptor Lake, Meteor Lake, DG2/Arc A-series3Already the default. Don't set it.
Lunar Lake, Battlemage (Arc B-series) and newern/aDriven 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
reboot

Proxmox 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 refresh

See 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=3

Save 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.