This is an old revision of the document!


Update i915 GPU driver to Linux 3.8

Our kernel-side i915 GPU driver is old, and platforms beginning with Haswell are not yet supported. This initiative aims to change that.

The work-in-progress branch is available on GitHub

  • Update to Linux 3.8 (Initial Haswell support)
  • Identify regressions in already supported GPU's
  • Land 3.8 driver in FreeBSD HEAD when complete (Regardless of Haswell support status)
  • Look at updating to Linux 3.9 (Many Haswell bugfixes)

Piglit runs fine on a Core Duo based laptop.

I can reproduce the “BUG ON: obj->base.write_domain & ~I915_GEM_GPU_DOMAINS” panic quite easily with GNOME 3. This is caused by two concurrent/conflicting accesses to the same drm_i915_gem_object. I'm still searching what's wrong.

Whether it works or not, I'm interested in the output of dmesg and, in case of a kernel crash, the corresponding /var/crash/core.txt.* files. Please send them to the freebsd-x11 mailing list.

At this time, we aren't providing user support. However, if you have patches, they are very much welcome!

Thank you for your help!

  1. Make sure you have everything setup to have kernel dumps:
# In /etc/rc.conf
dumpdev="AUTO"
ddb_enable="YES"

Additionally, it helps to have the following sysctl:

# In /etc/sysctl.conf
debug.debugger_on_panic=0
  1. Enable i915 debug messages:
# In /boot/loader.conf
drm.debug=3
  1. You need to clone the repository and switch to the drm-i915-update-38 branch:
git clone -b drm-i915-update-38 \
 https://github.com/freebsd/freebsd-base-graphics.git
  1. Build and install a kernel from this clone; I suggest you install the kernel with a non-default name:
cd freebsd-base-graphics
sudo make kernel INSTKERNNAME=kernel.i915
  1. Select the new kernel for the next boot and reboot:
sudo nextboot -k kernel.i915
sudo reboot
  1. Try to load the new driver:
sudo kldload i915kms
  1. Try to start an X.Org server and use it!
  1. Send feedback! Post on the freebsd-x11 mailing list
  • Modes above FullHD (1920×1080) seem broken: the screen is only garbage. I have the problem with an UltraHD monitor and some users reported a similar behavior with other modes.
  • Masachika ISHIZUKA on freebsd-x11@ gets a kernel panic: panic: BUG ON: obj->base.write_domain & ~I915_GEM_GPU_DOMAINS.
  • Stefan Wendler on freebsd-x11@ gets a blank screen, even in vt(4).

This is a list of files needing review. Reviewing consists of comparing each file with Linux 3.8.13 and with FreeBSD HEAD, to make sure everything is ported and no FreeBSD-specific changes were lost.

  • dvo_ch7017.c
  • dvo_ch7xxx.c
  • dvo_ivch.c
  • dvo_ns2501.c
  • dvo_sil164.c
  • dvo_tfp410.c
  • dvo.h
  • i915_debug.c
  • i915_dma.c
  • i915_drm.h
  • i915_drv.c
  • i915_drv.h
  • i915_gem_context.c
  • i915_gem_evict.c
  • i915_gem_execbuffer.c
  • i915_gem_gtt.c
  • i915_gem_stolen.c
  • i915_gem_tiling.c
  • i915_gem.c
  • i915_ioc32.c
  • i915_irq.c
  • i915_reg.h
  • i915_suspend.c
  • intel_acpi.c
  • intel_bios.c
  • intel_bios.h
  • intel_crt.c
  • intel_ddi.c
  • intel_display.c
  • intel_dp.c
  • intel_drv.h
  • intel_dvo.c
  • intel_fb.c
  • intel_hdmi.c
  • intel_iic.c
  • intel_lvds.c
  • intel_modes.c
  • intel_opregion.c
  • intel_overlay.c
  • intel_panel.c
  • intel_pm.c
  • intel_ringbuffer.c
  • intel_ringbuffer.h
  • intel_sdvo_regs.h
  • intel_sdvo.c
  • intel_sprite.c
  • intel_tv.c
  • graphicsold/update_i915_gpu_driver_to_linux_3.8.1452443329.txt.gz
  • Last modified: 2016/01/10 16:28
  • by JeanSébastienPédron