New generations of Intel® graphics hardware make use of firmware with power and performance benefits and functionalities like scheduling and media offloading. For more details about separate firmware functions see the section below. Firmware binaries are available on the linux-firmware repository, so it is most likely your current Linux distribution already packages them. Please check with your Linux distribution to see what is currently included.
All firmware binaries are posted on the public mailing of the linux-firmware project. This page is for descriptive purposes and a pointer to the relevant link on the git.kernel.org website. It is generally recommended that you wait for your Linux distribution to update its kernel.
Graphics microController (GuC)
The Graphics micro (µ) Controller (GuC) is designed to offload some of the functionality usually run on the host driver. This functionality includes:
- Authentication of the HEVC/H.265 micro (µ) Controller (HuC)
Enables use of HuC codec acceleration extensions by the iHD Intel media driver (described below).
- Low level graphics context scheduling
GuC context scheduling operations will include determining which context to run next, submitting a context to a command streamer for a next available engine and pre-empting and resubmitting existing contexts as required. With the GuC selecting which context to submit and the actual engine instance to submit to, it is also responsible for detecting hangs and initiating engine resets.
- Power management
When performing scheduling, the GuC is responsible for tracking busyness and making frequency and power gating decisions.
The GuC was first introduced in Gen9 devices with the above functionalities to be introduced over time. The first functionality introduced and officially supported was to provide HuC authentication. More recently, submission/scheduling and power management have been introduced. This support is platform specific and, even where possible, it is not recommended to enable the unsupported features which are treated as unsafe kernel options that will taint the kernel.
Official GuC support by platform can be seen in the table below. Note that prior to ADL-P, enablement was not by default and had to be enabled by kernel parameter.
|Gen||Platform||Feature||Default enabled?||Earliest Kernel|
|9||APL, SKL, KBL||HUC authentication||No||4.11|
|11||ICL, JSL, EHL||HUC authentication||No||5.4|
|12||TGL, RKL, ADL-S||HUC authentication||No||5.6|
|12||ADL-P+||HUC authentication and GuC submission and power management||Yes||5.14|
GuC submission and power management is enabled by setting the kernel module parameter: i915.enable_guc=1
HuC authentication only is enabled by setting the kernel module parameter: i915.enable_guc=2
Combine for both features together: i915.enable_guc=3
Please note that prior to kernel 4.16, HuC authentication was enabled by setting: i915.enable_guc_loading=1
Please see kernel documentation at https://www.kernel.org/doc/html/latest/gpu/i915.html#guc for more details.
HEVC/H.265 microController (HuC).
The HEVC/H.265 micro (µ) Controller (HuC) offloads some of the media functions from CPU to the GPU and is utilized by the iHD Intel media driver. These include but are not limited to bitrate control and header parsing. For example in the case of bitrate control, driver invokes HuC in the beginning of each frame encoding pass, encode bitrate is adjusted by the calculation done by HuC. Both the HuC hardware and the encode hardcode reside in GPU. Using HuC will save unnecessary CPU-GPU synchronization. Note that the GuC is required to enable the loading of HuC as descibed above.
Please see https://github.com/intel/media-driver for latest details on functionality and on which platforms and kernel versions it is available.
Display Microcontroller (DMC)
DMC provides additional graphics low-power idle states. It provides capability to save and restore display registers across these low-power states independently from the OS/Kernel.
Where to download
Firmware for Intel Linux Graphics is available on the git.kernel.org website. It is sorted by the three letter product code for your processor (for example Kabylake GuC might look like this: kbl_guc_33.0.0.bin). The i915 firmware download site for Linux Graphics can be found here: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915