This is an old revision of the document!


Update i915 GPU driver to Linux 3.8

Our kernel-side i915 GPU driver is getting old: platforms starting with Haswell are not supported at all.

Piglit runs fine on a Core Duo based laptop.

I'm focusing on reviewing the entire patch to post it to freebsd-x11@. The goal is to find any regression with already well supported GPUs. When it's in good shape, I will commit it, no matter the state for Haswell. After that, I will probably update to Linux 3.9 which brings many bugfixes for Haswell.

  • 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).

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!

The branch is on GitHub: https://github.com/freebsd/freebsd-base-graphics/tree/drm-i915-update-38

  1. Make sure you have everything setup to have kernel dumps. Especially, 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!

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: TODO: Port gen6_ggtt_bind_object()?
  • 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.1451380928.txt.gz
  • Last modified: 2015/12/29 09:22
  • by KubilayKocak