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
Goals
- 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)
Current status (2015-12-13)
Piglit runs fine on a Core Duo based laptop.
Testing Instructions / How To
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!
- 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
- Enable i915 debug messages:
# In /boot/loader.conf drm.debug=3
- You need to clone the repository and switch to the
drm-i915-update-38branch:
git clone -b drm-i915-update-38 \ https://github.com/freebsd/freebsd-base-graphics.git
- 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
- Select the new kernel for the next boot and reboot:
sudo nextboot -k kernel.i915 sudo reboot
- Try to load the new driver:
sudo kldload i915kms
- Try to start an X.Org server and use it!
- Send feedback! Post on the freebsd-x11 mailing list
Known Issues with 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).
Progress
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.cdvo_ch7xxx.cdvo_ivch.cdvo_ns2501.cdvo_sil164.cdvo_tfp410.cdvo.hi915_debug.ci915_dma.ci915_drm.hi915_drv.ci915_drv.hi915_gem_context.ci915_gem_evict.ci915_gem_execbuffer.ci915_gem_gtt.c: TODO: Portgen6_ggtt_bind_object()?i915_gem_stolen.ci915_gem_tiling.ci915_gem.ci915_ioc32.ci915_irq.ci915_reg.hi915_suspend.cintel_acpi.cintel_bios.cintel_bios.hintel_crt.cintel_ddi.cintel_display.cintel_dp.cintel_drv.hintel_dvo.cintel_fb.cintel_hdmi.cintel_iic.cintel_lvds.cintel_modes.cintel_opregion.cintel_overlay.cintel_panel.cintel_pm.cintel_ringbuffer.cintel_ringbuffer.hintel_sdvo_regs.hintel_sdvo.cintel_sprite.cintel_tv.c