i915 and "Hangcheck timer elapsed" error

Since Debian Jessie installation, I have encountered Hangcheck timer elapsed error. It is a really nasty bug as the only way to escape frozen X Window System is to reboot the whole operating system.

Please read Bug 75394 - System hangs randomly... [bugs.freedesktop.org] bug report for current information.
Please read Bug #1503731 - 8086:0f31 Ubuntu 15.04-15.10 freezes totally [bugs.launchpad.net] reported by Chris Rainey and his findings.

Issue

In my case this bug refers to the Intel i915 driver.

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)
$ lspci -s 00:02.0 -v
00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
	Subsystem: Dell Device 027f
	Flags: bus master, fast devsel, latency 0, IRQ 51
	Memory at fe800000 (64-bit, non-prefetchable) [size=4M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	I/O ports at ecb8 [size=8]
	Expansion ROM at <unassigned> [disabled]
	Capabilities: <access denied>
	Kernel driver in use: i915

The main symptom is frozen X Window System and the following message displayed on the first virtual console. You can use it to login as root and reboot system.

[drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... render ring idle

This message is also stored in /var/log/syslog log file.

$ cat /var/log/syslog.1 | grep i915
Nov 24 12:00:49 milosz-komputer kernel: [ 4553.808077] [drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... render ring idle

Solution

The solution is to enable semaphores as it will solve encountered stability issues.

Add i915.semaphores=1 kernel parameter to the default Linux kernel command-line arguments inside /etc/default/grub configuration file.

$ sudo sed -i -e "/GRUB_CMDLINE_LINUX_DEFAULT/ s/\"$/ i915.semaphores=1&/" /etc/default/grub

Regenerate GRUB configuration.

$ sudo update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
Found linux image: /boot/vmlinuz-3.16-3-amd64
Found initrd image: /boot/initrd.img-3.16-3-amd64
done

Reboot. Problem solved.

Ending notes

This issue has bothered me for awhile till I also disabled Intel Virtualization Technology in BIOS.

The following screen-shot shows the most important part of the Intel 2011Q4 Graphics Stack Release Notes used to solve this issue.

Suggested reading
Milosz Galazka's Picture

About Milosz Galazka

Milosz is a Linux Foundation Certified Engineer working for a successful Polish company as a system administrator and a long time supporter of Free Software Foundation and Debian operating system. He is also open for new opportunities and challenges.

Gdansk, Poland https://sleeplessbeastie.eu